Как настроить ответ api из функции retrieve в mixin
Я новичок в Django, я написал API представление на основе класса с mixin. функциональность проста, т.е. получить данные заданного id. я вставляю код ниже.
class GenericAPi(generics.GenericAPIView,mixins.ListModelMixin,mixins.RetrieveModelMixin):
serializer_class=ArticleSerializer
queryset=Article.objects.all()
lookup_field="id"
def get(self,request,id):
if id:
data=self.retrieve(request)
return Response({"data":data.data,"status":data.status_code})
else:
return self.list(request)
вот ответ, который я получаю
{"id":5, "title": "loream", "author": "me"}
Затем я перехожу к функции retrieve в mixin, чтобы внести некоторые изменения в ответ.
def retrieve(self, request, *args, **kwargs):
print('Retrieving')
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response({"result":serializer.data})
и затем я делаю вызов API, но все равно получаю тот же ответ. Как настроить ответ в самой функции retrieve.
Мне нужен ответ, подобный этому.
< Я думаю, что вам не нужно настраивать функцию retrieve
в RetrieveModelMixin
.
class GenericAPi(generics.GenericAPIView,mixins.ListModelMixin,mixins.RetrieveModelMixin):
serializer_class=ArticleSerializer
queryset=Article.objects.all()
lookup_field="id"
def get(self, request, id):
if id:
article = self.get_object()
return Response({"result": ArticleSerializer(article).data})
return
return self.list(request, *args, **kwargs)