python - Django 自定义字典响应
问题描述
我正在使用 Django 休息框架,我有一个以字典格式返回信息的视图。这是我的模型:
class Child(models.Model):
name = models.CharField(max_length=50, unique=True)
age = models.IntegerField(null=False, blank=False)
height = models.IntegerField(null=False, blank=False)
我想将以下响应作为字典返回,其中name
字段是键:
{
"Alice Allen": {
"age": 3,
"height": 98
},
"Bob Brady": {
"age": 4,
"height": 105
}
}
我知道我可以使用 GenericAPIView 并在“get”方法中实现逻辑(获取数据并解析成字典),但我想知道是否有另一种使用 Django 序列化程序的解决方案。
谢谢。
解决方案
如果您使用的是视图集,您可以尝试覆盖该list
方法并自定义响应:
class ChildViewSet(viewsets.ModelViewSet):
def list(self, request, *args, **kwargs):
response = super(ChildViewSet, self).list(request, *args, **kwargs)
response.data = {result.pop('name'): result for result in response.data}
return response