Django Rest Framework - 用模型名称包装 JSON 响应
Django Rest Framework - Wrapping the JSON response with the name of the model
我的目标是在列出项目时自定义来自 Django DRF 的 JSON 响应。
型号:
class Object(models.Model):
code = models.CharField(max_length=16, primary_key=True, unique=True)
item = models.CharField(max_digits=128)
last_updated = models.DateTimeField(auto_now=True, editable=False)
序列化器:
class ObjectSerializer(serializers.ModelSerializer):
class Meta:
model = Object
fields = ['code', 'item']
观点:
class ObjectList(generics.ListAPIView):
queryset = Object.objects.all()
serializer_class = ObjectSerializer
def list(self, request):
queryset = self.get_queryset()
serializer = ObjectSerializer(queryset, many=True)
return Response(serializer.data)
使用此设置,JSON 响应为:
[
{
"code": "111",
"item": "aaa"
},
{
"code": "222",
"item": "bbb"
}
]
有没有办法用模型名称包装响应?
预期结果为:
"objects": [
{
"code": "111",
"item": "aaa"
},
{
"code": "222",
"item": "bbb"
}
]
您可以在视图级别自定义响应,只需将序列化程序的数据包装到外部字典中即可:
class ObjectList(generics.ListAPIView):
queryset = Object.objects.all()
serializer_class = ObjectSerializer
def list(self, request):
queryset = self.get_queryset()
serializer = ObjectSerializer(queryset, many=True)
return Response({"objects": serializer.data})
我的目标是在列出项目时自定义来自 Django DRF 的 JSON 响应。
型号:
class Object(models.Model):
code = models.CharField(max_length=16, primary_key=True, unique=True)
item = models.CharField(max_digits=128)
last_updated = models.DateTimeField(auto_now=True, editable=False)
序列化器:
class ObjectSerializer(serializers.ModelSerializer):
class Meta:
model = Object
fields = ['code', 'item']
观点:
class ObjectList(generics.ListAPIView):
queryset = Object.objects.all()
serializer_class = ObjectSerializer
def list(self, request):
queryset = self.get_queryset()
serializer = ObjectSerializer(queryset, many=True)
return Response(serializer.data)
使用此设置,JSON 响应为:
[
{
"code": "111",
"item": "aaa"
},
{
"code": "222",
"item": "bbb"
}
]
有没有办法用模型名称包装响应? 预期结果为:
"objects": [
{
"code": "111",
"item": "aaa"
},
{
"code": "222",
"item": "bbb"
}
]
您可以在视图级别自定义响应,只需将序列化程序的数据包装到外部字典中即可:
class ObjectList(generics.ListAPIView):
queryset = Object.objects.all()
serializer_class = ObjectSerializer
def list(self, request):
queryset = self.get_queryset()
serializer = ObjectSerializer(queryset, many=True)
return Response({"objects": serializer.data})