返回QuerySet的所有值并序列化为JSON

时间:2017-04-08 20:42:57

标签: python json django serialization django-models

使用此代码指定所有值以返回QuerySet

import json

posts = (Post.objects.filter(owner=authenticated_user)
                 .values('id', 'title', 'summary'))
json_posts = json.dumps(list(posts))

有没有办法避免指定QuerySet的所有值(' id',' title'和' summary')?例如

posts = (Post.objects.filter(owner=authenticated_user)
                 .values(ALL VALUES))

修改

最终目标是将QuerySet序列化为JSON。以下代码引发了AttributeError

try:
    obj = SystemOverview.objects.filter(serial=pk).values()
except SystemOverview.DoesNotExist:
    return Response(status=status.HTTP_404_NOT_FOUND)

if request.method == 'GET':
    return Response(serializers.serialize("json", list(obj)))

#ERROR MESSAGE
#AttributeError: 'dict' object has no attribute '_meta'

将Django对象模型序列化为JSON而不列出其所有值的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如Django文档中所述https://docs.djangoproject.com/en/1.10/ref/models/querysets/#values

  

values()方法采用可选的位置参数*字段,   它指定SELECT应限制的字段名称。如果   您指定字段,每个字典将只包含该字段   您指定的字段的键/值。 如果您没有指定   字段,每个字典将包含每个字段的键和值   在数据库表中

只需使用Post.objects.filter(owner=authenticated_user).values()

即可

修改

objs = SystemOverview.objects.filter(serial=pk).values()

if request.method == 'GET':
    return Response(serializers.serialize("json", objs))