Как вызвать сериализатор Django REST внутри обновления?
Я пытаюсь заставить свой метод обновления добавить ссылку в список ссылок. Проблема в том, что ответом на запрос PATCH является OrderedDict, и я бы предпочел, чтобы он был сериализован. Я пытался вызвать свой сериализатор внутри метода update, но я не уверен, как получить информацию для поля data LinkListSerializer, поэтому в итоге я получаю
Невозможно вызвать .is_valid(), так как при инстанцировании экземпляра сериализатора не был передан аргумент ключевого слова data=.
Любой совет будет признателен, вот мой код:
class LinkListViewSet(viewsets.ModelViewSet,
generics.RetrieveUpdateDestroyAPIView):
queryset = LinkList.objects.all()
serializer_class = LinkListSerializer
filter_backends = [IsOwnerOrPublicFilter]
permission_classes = [IsOwnerOrPublic]
def update(self, request, *args, **kwargs):
new_link, created = Link.objects.update_or_create(
link=request.data.get('links'),
defaults={'link': request.data.get('link')},
)
instance = self.get_object()
if created:
instance.links.add(new_link)
instance.save()
return Response(status=status.HTTP_200_OK)
Serializer:
class LinkListSerializer(serializers.ModelSerializer):
url = serializers.HyperlinkedIdentityField(view_name="lists-detail")
owner = serializers.HiddenField(default=serializers.CurrentUserDefault())
links = LinkSerializer(read_only=True, many=True)
class Meta:
model = LinkList
fields = ['url', 'owner', 'name', 'public', 'links', 'description']