将id字段提取为键django rest框架序列化程序
假设我有一个博客模型,其中包含以下字段:将id字段提取为键django rest框架序列化程序,django,django-models,django-rest-framework,django-serializer,Django,Django Models,Django Rest Framework,Django Serializer,假设我有一个博客模型,其中包含以下字段: id内容标题 如果要创建模型序列化程序,它将序列化为: [ {id: 1, content: "content1", title: "title1"}, {id: 2, content: "content2", title: "title2"}, ] { '1': {content: "content1", title: "t
id
内容
标题
如果要创建模型序列化程序,它将序列化为:
[
{id: 1, content: "content1", title: "title1"},
{id: 2, content: "content2", title: "title2"},
]
{
'1': {content: "content1", title: "title1"},
'2': {content: "content2", title: "title2"},
}
但我希望它序列化为:
[
{id: 1, content: "content1", title: "title1"},
{id: 2, content: "content2", title: "title2"},
]
{
'1': {content: "content1", title: "title1"},
'2': {content: "content2", title: "title2"},
}
通过这种方式,我可以在前端更快地访问给定id的元素,而不必手动搜索id。
我该怎么做
编辑:
正如@ArshDoda在评论中所说,凌驾于_代表之上是有效的。但现在它序列化为:
[
{
"1": {content: "content1", title: "title1"}
},
{
"2": {content: "content2", title: "title2"}
},
]
这几乎是同样的问题。我无法立即在前端访问它们,因为它是一个数组。我希望它是所有博客的对象,而不是像上面那样的数组。我认为它成为一个数组的原因是,当我创建序列化程序时,我像这样使用many=True
:blog\u serializer=BlogSerializer(data,many=True)
。我该如何解决这个问题
编辑2:
以下是to_表示的代码:
def to_representation(self, instance):
ret = super().to_representation(instance)
my_id = ret['id']
del ret['id']
return {my_id: ret}
使用序列化程序中的to_表示函数来自定义输出。请详细说明或提供任何资源。勾选基本示例:谢谢。我试试看,你为什么要走第二条路?对于前端来说,列表或映射无关紧要,前端以任何方式都可以用于循环,但使键id更优雅和正确使用序列化程序中的表示函数来定制输出您可以详细说明或提供任何资源吗?勾选基本示例:谢谢。我试试看,你为什么要走第二条路?对于前端来说,列表或地图都无关紧要,前端在任何方面都可以用于循环,但使键id更加优雅和正确