У меня есть три разных типа объектов: RawArticle
, RawPatent
и RawGrant
.
У меня есть отличные рабочие сериализаторы, базовым классом которых является serializers.ModelSerializer
.
Если я получаю набор запросов RawArticle
, я могу передать его непосредственно сериализатору с many=True
, и вывод будет номинальным:
[{"save_link": "...", "published": "2014-01-18T20:39:54.086Z", }, {"save_link": "...", "published": "..."}, ...]
Этот ответ генерируется из следующего кода:
return Response(RawArticleSerializer(articles, many=True).data)
Теперь, когда у меня есть три разных объекта, я хотел бы соединить их в цепочку, как указано выше, но с соответствующими объектами.
Я пока безуспешно. Моя первоначальная идея заключалась в том, чтобы просто создать список сериализованных объектов и вернуть его (конечно, сериализованный) как таковой:
all_latest = user_latest(request)['latest_articles']
available_serializers = {RawArticle: RawArticleSerializer, RawGrant: RawGrantSerializer, RawPatent: RawPatentSerializer}
serialized = []
for article in all_latest:
serialized.append((available_serializers[type(article)](article, many=False)).data)
return Response(str(serialized))
Приведенный выше код не возвращает JSON, а дата и время не преобразуются в фактическую дату и время в виде строки.
Моя последняя попытка заключалась в использовании json.dumps и simplejson, и оба поднимали TypeError
, говоря:
объект даты и времени не сериализуем.
Любой намек будет принят с благодарностью.