2012-09-10 41 views
6

Tôi đang cố gắng để thực hiện một JSON mà sẽ trông như thế này:Django. Nhận giá trị cho tất cả các lĩnh vực trong một đối tượng

[ 
    { 
     "num_of_followers": 2, 
     "name": "Math 140", 
     "created_by": "aaa" 
    } 
] 

Vấn đề là tôi không thực sự hiểu làm thế nào tôi có thể nhận được một danh sách các giá trị cho một đối tượng cơ sở dữ liệu cụ thể (một lời làm thế nào tôi có thể nhận được toàn bộ hàng)

@csrf_exempt 
def create_subject(request, subject): 
    subject, created= Subjects.objects.get_or_create( 
     name=subject, 
     user=request.user, 
     created_by=request.user) 
    list = [] 
    columns = [Subjects._meta.get_all_field_names()] 
    row = ???????? 
    for value in row: 
     record = dict(zip(columns,value)) 
     list.append(record) 
    result = simplejson.dumps(list, indent=4) 
    return HttpResponse(result) 
+1

bạn đang tìm kiếm .values ​​queryset() phương pháp? https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values ​​ – Marat

+0

vâng, chính xác, tôi chỉ tìm thấy nó, nhưng thật không may khi tôi làm điều này: hàng = Subjects.objects.get (id = 3) .values ​​(), tôi nhận được lỗi: đối tượng 'Subjects' không có thuộc tính 'values' – Vor

+1

.get() trả về một cá thể đối tượng, không phải queryset. Trong ví dụ này, Subjects.objects.filter (id = 3) sẽ hoạt động như dự định – Marat

Trả lời

8

.values ​​sử dụng() phương pháp queryset:

@csrf_exempt 
def create_subject(request, subject): 
    subject, created= Subjects.objects.get_or_create( 
     name=subject, 
     user=request.user, 
     created_by=request.user) 

    return HttpResponse(
     simplejson.dumps(
      list(models.Subject.objects.filter(id=subject.id).values()), 
      indent=4 
     ) 
    ) 
Các vấn đề liên quan