我正在将一组现有 API 从 tastypie 转换为 REST 框架。默认情况下,在执行列表 API 时,tastypie 返回一个包含对象列表的字典和一个元数据字典,而 REST framework 只返回一个对象数组。例如,我有一个名为 Site 的模型。 Tastypie 返回一个看起来像
的字典{ "meta": { ... some data here ...}, "site": [ {... first site...}, {...second site...} ... ] }
REST framework 只返回数组
[ {... first site...}, {...second site...} ... ]
我们不会以任何方式使用来自 tastypie 的元数据。在 REST 框架中更改返回值的侵入性最小的方法是什么?我可以覆盖 list(),但我宁愿让 REST 框架尽可能地做它的事情。
最佳答案
我认为您将不得不覆盖 list()
方法。
我们首先得到原始响应。然后我们使用 data
属性设置响应的自定义表示,并返回带有此自定义表示的响应。
class MyModelViewSet(viewsets.ModelViewSet):
def list(self, request, *args, **kwargs):
response = super(MyModelViewSet, self).list(request, *args, **kwargs) # call the original 'list'
response.data = {"site": response.data} # customize the response data
return response # return response with this custom representation
关于python - 在 REST 框架中返回字典而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33306071/