Привет, я хочу вернуть список dict объекта вместо созданного dict объекта при вызове метода create
из serializers.ModelSerializer
.
Я уже прочитал , каков поток управления 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()
Извините, я вроде забыл полный код. Есть ли лучший способ решить эту проблему? Это требование как-то странно, но так оно и есть: *
Спасибо, что прочитали мой вопрос
UPDATE
Можно просто переопределить метод 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)