使用 Django-REST 框架,我有以下视图:
class MyRESTfulAPIView(APIView):
permission_classes = [IsAuthenticated, MyCustomPermision]
def get(self, request):
data = MyModel.objects.values('field1').annotate(field2=..., field3=...)
return Response(data)
它返回一个带有以下形状的 JSON:
[
{'field1': Result1.field1, 'field2': Result1.field2, 'field3': Result1.field3},
{'field1': Result2.field1, 'field2': Result2.field2, 'field3': Result2.field3},
...
]
有没有办法将每一列作为值列表,如下所示:
{
'field1': [Result1.field1, Result2.field1, ...],
'field2': [Result1.field2, Result2.field2, ...],
'field3': [Result1.field3, Result2.field3, ...],
}
JSON 的确切形状并不重要,只需将每个“列”(模型字段)作为所有值的列表,而不是将每一行作为字典。(因为数据然后被传递到期望数据位于单独列表中的库)
显然,我可以解压 QuerySet 并用 Python 重构它(例如在那个答案中),但我正在寻找某种方法来告诉 Django 或 DRF 首先像这样构建 JSON,而不是让 Django 和 DRF 构建结果以一种方式,然后再次迭代结果以对其进行重构。