Python DRF返回json的数据属性内的项,而不是数组

Python DRF返回json的数据属性内的项,而不是数组,python,django,django-rest-framework,Python,Django,Django Rest Framework,将我的端点序列化为以下内容的最佳方法是什么: { status: 200, meta: { "name": "foo", "total": 666 }, data: [ {item1}, {item2}, {item3}, ...with the pagination affecting this array ] } 默认情况下,我得到: [ {item1}, {item2}, {item3}, ...

将我的端点序列化为以下内容的最佳方法是什么:

{
  status: 200,
  meta: {
    "name": "foo",
    "total": 666
  },
  data: [
     {item1},
     {item2},
     {item3},
     ...with the pagination affecting this array
  ]
}
默认情况下,我得到:

[
  {item1},
  {item2},
  {item3},
  ...with pagination
]
我能够得到接近我想要的结果(缺少分页),但我相信这不是最好的方法。我的序列化程序如下所示:

class FooSerializer(serializers.ModelSerializer):
  status = serializers.SerializerMethodField()
  meta = serializers.SerializerMethodField()
  data = serializers.SerializerMethodField()

  def get_status(self, obj):
    return status.HTTP_200_OK

  def get_meta(self, obj):
    summary = {
      "name": obj.name,
        "total": obj.user.device_set.count()
    }
    return summary

  def get_data(self, obj):
    devices = obj.user.device_set.all()
    return DeviceListSerializer(devices, many=True).data

  class Meta:
    model = Device
    fields = ('status', 'meta', 'data')
它会在你得到的回应附近触动你


但是这样你就没有分页了,对吗?或者我必须手动控制分页,我在Django IRC频道上得到了这个软件包的建议,但我需要更好地理解它是如何工作的。
response_dic = {}
response_dic['status_code'] = status_code
if settings.HTTP_USER_ERROR == status_code:
    response_dic['error'] = response
elif response:
    response_dic['data'] = data
    response_dic['meta'] = meta
return response_dic