当我希望收到JSON响应时,我会创建一个应用程序,而不是接收和组织。
目前,我有一个ListSerializer类型的序列化程序,它会给我一些类似
的响应[
{
"Title": "ABCD",
"Content": "Article Stuff",
"Category": "News"
},
{
"Title": "EFGH",
"Content": "Article Stuff",
"Category": "Jokes"
},
{
"Title": "QWER",
"Content": "Article Stuff",
"Category": "News"
},
]
我希望它是这样的: -
{
"News": [
{
"Title": "ABCD",
"Content": "Article Stuff",
"Category": "News"
},
{
"Title": "QWER",
"Content": "Article Stuff",
"Category": "News"
}
],
"Jokes": [
{
"Title": "EFGH",
"Content": "Article Stuff",
"Category": "Jokes"
}
]
}
我刚才使用默认的模型序列化器。我知道如果我自己从SQL结果集创建JSON,我将如何做到这一点,但如果我能编写一个可以执行此操作的序列化程序,那会更好。 此外,我计划在此之后对每个类别进行一些分页。但这应该不是一个大问题,我猜想只需要将检查从数据库中提取到特定类别的文章。
答案 0 :(得分:0)
覆盖序列化程序的.to_representation()方法。
由于没有关于ModelClass对象和关系的大量信息,以下是可能对您有帮助的示例:
class ArticleSerializer(serializers.ModelSerializer):
def to_representation(self, instance):
response_dict = dict()
response_dict[instance.section_id] = {
'News': ArticleSerializer(Article.objects.filter(category="News"), many=True).data,
'Jokes': ArticleSerializer(Article.objects.filter(category="Jokes"), many=True).data
}
return response_dict