如何使用Djangorestframework中的UpdateAliView更新模型中的单个字段?

如何使用Djangorestframework中的UpdateAliView更新模型中的单个字段?,django,python-3.x,django-rest-framework,django-serializer,django-generic-views,Django,Python 3.x,Django Rest Framework,Django Serializer,Django Generic Views,我正在学习通用视图并创建一些Api。如何从“联系人”模型中更新“移动”字段 我想从url获取用户id(mobile/update/user\u id)。但是在创建queryset时,它不起作用。我想做这里提到的事情(#queryset=Contacts.objects.filter(id=Usertab.objects.filter(id=self.kwargs['id']).first().contact.id)) ''蟒蛇 ''' 这些是模型 class Contacts(models.Mo

我正在学习通用视图并创建一些Api。如何从“联系人”模型中更新“移动”字段

我想从url获取用户id(mobile/update/user\u id)。但是在创建queryset时,它不起作用。我想做这里提到的事情(#queryset=Contacts.objects.filter(id=Usertab.objects.filter(id=self.kwargs['id']).first().contact.id))

''蟒蛇

''' 这些是模型

class Contacts(models.Model):

mobile = models.IntegerField(null=False)
Landline = models.IntegerField(null=False)
whats_app = models.IntegerField(null=False)
类用户选项卡(models.Model):

班级电子邮件(models.Model):

'''

''这是序列化程序

class ContactsSerializer(ModelSerializer):

class Meta:
    model = Contacts
    fields = '__all__'

def update(self, instance, validated_data):
    instance.mobile = validated_data.get('mobile', instance.mobile)
    instance.save()
    return instance
'''


TypeError:update()获得了一个意外的关键字参数“pk”

我认为错误与您的
queryset
值有关。如果目标是 联系人模型,只需将查询集作为联系人模型中的所有项即可。这样,可以使用lookup字段过滤整个数据集并编辑适当的条目

class UpdateMobileAPIView(generics.UpdateAPIView):
    queryset = Contacts.objects.all()
    serializer_class = ContactsSerializer
    lookup_field = 'pk'

    def update(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data, partial=True)

        if serializer.is_valid():
            serializer.save()
            return Response({"message": "mobile number updated successfully"})

        else:
            return Response({"message": "failed", "details": serializer.errors})

我认为错误在于您的
queryset
值。如果目标是 联系人模型,只需将查询集作为联系人模型中的所有项即可。这样,可以使用lookup字段过滤整个数据集并编辑适当的条目

class UpdateMobileAPIView(generics.UpdateAPIView):
    queryset = Contacts.objects.all()
    serializer_class = ContactsSerializer
    lookup_field = 'pk'

    def update(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data, partial=True)

        if serializer.is_valid():
            serializer.save()
            return Response({"message": "mobile number updated successfully"})

        else:
            return Response({"message": "failed", "details": serializer.errors})

但我从url得到的pk是我们要更新其移动字段的用户id。那么,它将如何从以下用户id映射联系人id?当我将查找字段更改为“联系人用户”时,它似乎起了作用。谢谢!但我从url得到的pk是我们要更新其移动字段的用户id。那么,它将如何从以下用户id映射联系人id?当我将查找字段更改为“联系人用户”时,它似乎起了作用。谢谢!
class ContactsSerializer(ModelSerializer):

class Meta:
    model = Contacts
    fields = '__all__'

def update(self, instance, validated_data):
    instance.mobile = validated_data.get('mobile', instance.mobile)
    instance.save()
    return instance
class UpdateMobileAPIView(generics.UpdateAPIView):
    queryset = Contacts.objects.all()
    serializer_class = ContactsSerializer
    lookup_field = 'pk'

    def update(self, request, *args, **kwargs):
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data, partial=True)

        if serializer.is_valid():
            serializer.save()
            return Response({"message": "mobile number updated successfully"})

        else:
            return Response({"message": "failed", "details": serializer.errors})