обновить модель в представлении представления django restframework

#django #django-rest-framework

#django #django-rest-framework

Вопрос:

Я не могу найти примеры использования исправления для обновления частичного представления в rest framework, и это не вычислительно для меня. Вот мой код:

 class ArworkIsSold(generics.RetrieveUpdateAPIView):
permission_classes = [permissions.IsAuthenticatedOrReadOnly]
serializer_class = ArtworkSerializer
queryset = Artwork.objects.all()

def partial_update(self, request, pk=None):
    data = {sold:True,forSale:False}
    serializer = ArtworkSerializer(context={'request': request},data=data, partial=True)
    serializer.is_valid()
    serializer.save()
    serializer.is_valid(raise_exception=True)
    return Response(serializer.data)
  

Однако он не обновляется, и я получаю эту ошибку:

Ошибка имени: имя «продано» не определено

Моя модель действительно продана, и я пытаюсь просто установить данные в представлении вместо отправки их из запроса ajax. Я просто хочу нажать на представление и обновить два поля.

Ответ №1:

Вы не можете использовать неопределенную переменную в качестве ключа словаря. Используйте строки в качестве ключей, а затем передайте словарь в качестве параметра «данные»:

 class ArworkIsSold(generics.RetrieveUpdateAPIView):
    permission_classes = [permissions.IsAuthenticatedOrReadOnly]
    serializer_class = ArtworkSerializer
    queryset = Artwork.objects.all()

    def partial_update(self, request, pk=None):
        data = {'sold':True, 'forSale':False}
        serializer = ArtworkSerializer(context={'request': request},data=data, partial=True)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data)
  

Комментарии:

1. Спасибо, это было все. Хотелось бы, чтобы на сайте rest Framework было несколько примеров обновления.