在Django中,如何序列化返回dict对象的QuerySet(使用.values()创建)

时间:2017-05-19 14:31:15

标签: python json django serialization django-serializer

在Django 1.10中我试图序列化我从以下查询中获得的QuerySet:

events_in_period = Event.objects \
.filter(timestamp__gte=start_day,
        timestamp__lte=end_day,
        request__isnull=False,
        name=EventType.COMPLETED) \
.annotate(date=TruncDay('timestamp')) \
.values('date') \
.annotate(completed_count=Count('id')) \
.order_by('date')

主要是.values()语句使该语句返回一个包含dict而不是Django模型实例的QuerySet。

因此,以下调用序列化

from django.core import serializers
output = serializers.serialize('json', result)

因以下错误而失败:

AttributeError: 'dict' object has no attribute '_meta'

有关序列化的任何建议,而不是省略.values(),因为我需要它们以简洁。

1 个答案:

答案 0 :(得分:1)

如果要将dict对象序列化为json,则可以导入json

import json
data = json.dumps(result)

Django序列化程序适用于Django模型对象和QuerySets。这就是为什么它正在寻找一个_meta领域。