我找不到在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请求中发送数据。我只想点击一个视图并让它更新两个字段。
答案 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)