在Serializer中使用Create方法时返回所有对象的列表(Django Rest Framework)

时间:2018-05-13 00:43:45

标签: python django-rest-framework serializer

嗨我希望在调用来自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)

0 个答案:

没有答案