嗨我希望在调用来自create
方法的serializers.ModelSerializer
时返回对象dict的列表而不是创建的对象dict。
我已经阅读了what is the control flow of django rest framework,我知道我可以覆盖to_representation
方法的答案,所以我从create
方法返回一个对象列表,然后在to_representation
我处理字典列表的对象列表。像这样的东西
#the data validation is for it has to be from create is omitted
def to_representation(self, datas):
list_of_dict = []
for data in datas:
list_of_dict.append(data.__dict__)
return list_of_dict
我知道我将返回值从dict更改为dict列表,所以我读取了源代码并找到了data属性,它从序列化器读取数据并使用ReturnDict返回输出。我试图覆盖数据属性但不知何故它不起作用。
@property
def data(self):
... reads the data from serializer field
return ReturnList()
对不起,我忘记了完整的代码。有没有更好的方法来解决这个问题?这个要求有点奇怪,但它是如何:)
感谢您阅读我的问题
更新
可以在create
次视图中覆盖ModelViewSet
方法。它解决了这个问题,但问题仍然存在,如果有人知道这个解决方案只是来自串行器。
def create(self, request, *args, **kwargs):
super().create(request, *args, **kwargs)
datas = Object.objects.all()
result = []
for data in datas:
result.append(data.__dict__)
serializer = self.get_serializer()
headers = self.get_success_headers(serializer.data)
return Response(result, status=status.HTTP_201_CREATED, headers=headers)