在Django restframework视图的视图中更新模型

时间:2020-10-01 19:36:06

标签: django django-rest-framework

我找不到在rest框架中使用补丁更新部分视图的示例,并且它对我而言不是计算能力。这是我的代码:

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)

但是,它没有更新,并且出现此错误:

NameError:未定义名称“出售”

我的模型确实已经售出,我正在尝试仅在视图中设置数据,而不是从ajax请求中发送数据。我只想点击一个视图并让它更新两个字段。

1 个答案:

答案 0 :(得分:0)

您不能将未定义的变量用作字典键。使用字符串作为键,然后将字典作为“数据”参数传递:

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)