在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()
,因为我需要它们以简洁。
答案 0 :(得分:1)
如果要将dict对象序列化为json,则可以导入json
,
import json
data = json.dumps(result)
Django序列化程序适用于Django模型对象和QuerySets。这就是为什么它正在寻找一个_meta领域。