Django Rest Framework - 嵌套关系为Flat

时间:2015-12-08 07:56:58

标签: django django-rest-framework

http://www.django-rest-framework.org/api-guide/relations/#nested-relationships

从文档中不清楚是否可以使用相同的嵌套关系原则来呈现平坦的JSON。

例如:

"nest": {
    "b": {
        "c": {
            "d": {
                "e": {
                    "E": "echo"
                },
                "D": "delta"
            },
            "C": "charlie"
        },
        "B": "beta"
    },
    "A": "alpha"
}

"flat": {
    "A": "alpha",
    "B": "beta",
    "C": "charlie",
    "D": "delta",
    "E": "echo"
}

如何实现flat JSON?

1 个答案:

答案 0 :(得分:0)

让我们假设你的代码看起来像

mymodel_queryset = MyModel.objects.all()

所以你可以做的是编写自己的自定义序列化程序,如下所示:

def my_custom_serializer(queryset):
   res = []
   for q in queryset:
      ob = {'name': q.name, 'city': q.city.name} # Notice how i use the relation here for city. So the nested relation is becoming flat for city
      res.append(ob)
   return res

现在,您可以在代码中使用

 data = my_custom_serializer(mymodel_queryset)
 return Response(status=status.HTTP_200_OK, data=data)

希望这会对你有所帮助。 :)