我刚开始接触DRF,正在尝试编写自定义视图/序列化程序,以便只更新用户对象的一个字段。
我需要编写逻辑来仅更新用户的“名称”。
我已经编写了序列化器:
class ClientNameSerializer(serializers.ModelSerializer):
class Meta:
model = ClientUser
fields = ('name',)
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
instance.save()
return instance
这个方法从未被调用。我尝试在那里设置断点并进行调试,但它从未被调用,即使我使用PUT、POST或PATCH方法。如果我添加create方法,当我使用POST时它会被调用。
这是我的视图的样子:
class UpdateName(generics.CreateAPIView):
queryset = ClientUser.objects.all()
serializer_class = ClientNameSerializer
permission_classes = (permissions.IsAuthenticated,)
有人有什么建议吗?谢谢!
我的 models.py 看起来是这样的
class ClientUser(models.Model):
owner = models.OneToOneField(User,unique=True,primary_key=True)
phone_number = models.CharField(validators=[PHONE_REGEX],max_length=20,unique=True)
name = models.CharField(max_length=100,blank=True)
status = models.IntegerField(default=1)
member_from = models.DateTimeField('member from',auto_now_add=True)
is_member = models.BooleanField(default=False)
instance = self.get_object()
。 - Bob期望调用名为“pk”的URL关键字参数的视图UpdateName。修复您的URL配置,或正确设置视图上的.lookup_field属性
。 - BobPerson.objects.filter(....).update(name="some name")
。 - Bob