В Django, как мне сериализовать QuerySet, который возвращает объект dict (созданный с помощью.values ())
В 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()
оператор, который заставляет этот оператор возвращать QuerySet, который содержит dict
а не экземпляр модели Django.
Поэтому следующие вызовы для его сериализации
from django.core import serializers
output = serializers.serialize('json', result)
ошибка со следующей ошибкой:
AttributeError: 'dict' object has no attribute '_meta'
Любые предложения по сериализации, не опуская .values()
как мне они нужны для краткости.
1 ответ
Если вы хотите сериализовать объект dict в json, вы можете импортировать json
,
import json
data = json.dumps(result)
Сериализаторы Django предназначены для объектов модели Django и QuerySets. Вот почему он ищет поле _meta.