Django 不使用RESTAPI更新字段

Django 不使用RESTAPI更新字段,django,django-rest-framework,Django,Django Rest Framework,我有一个型号.py class UserPaymentInformation(models.Model): ... awaiting_confirmation = models.BooleanField(default=False) class UserPaymentInformationUpdateAPIView(generics.UpdateAPIView): permission_classes = (IsAuthenticatedDriver,) ser

我有一个型号.py

class UserPaymentInformation(models.Model):
    ...
    awaiting_confirmation = models.BooleanField(default=False)
class UserPaymentInformationUpdateAPIView(generics.UpdateAPIView):
    permission_classes = (IsAuthenticatedDriver,)
    serializer_class = UserPaymentInformationUpdateSerializer
    queryset = serializer_class.Meta.model.objects.all()


        def update(self, request, *args, **kwargs):
            partial = kwargs.pop("partial", False)
            instance = self.serializer_class.Meta.model.objects.get(
                user=self.request.user
            )
    
            self.mark_user_as_new()
            # awaiting_confirmation = True # I WANT SOMETHING LIKE THIS
            serializer = self.get_serializer(
                instance, data=request.data, partial=partial
            )
            serializer.is_valid(raise_exception=True)
            self.perform_update(serializer)
            return Response({"result": serializer.data})
class UserPaymentInformationUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserPaymentInformation
        fields = ("id", "full_name", "card_number", "account_number", "bik", "awaiting_confirmation")
我想在代码中设置
等待确认=True
。但禁止
等待\u确认
通过RestAPI调用进行更新

视图.py

class UserPaymentInformation(models.Model):
    ...
    awaiting_confirmation = models.BooleanField(default=False)
class UserPaymentInformationUpdateAPIView(generics.UpdateAPIView):
    permission_classes = (IsAuthenticatedDriver,)
    serializer_class = UserPaymentInformationUpdateSerializer
    queryset = serializer_class.Meta.model.objects.all()


        def update(self, request, *args, **kwargs):
            partial = kwargs.pop("partial", False)
            instance = self.serializer_class.Meta.model.objects.get(
                user=self.request.user
            )
    
            self.mark_user_as_new()
            # awaiting_confirmation = True # I WANT SOMETHING LIKE THIS
            serializer = self.get_serializer(
                instance, data=request.data, partial=partial
            )
            serializer.is_valid(raise_exception=True)
            self.perform_update(serializer)
            return Response({"result": serializer.data})
class UserPaymentInformationUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserPaymentInformation
        fields = ("id", "full_name", "card_number", "account_number", "bik", "awaiting_confirmation")
序列化程序.py

class UserPaymentInformation(models.Model):
    ...
    awaiting_confirmation = models.BooleanField(default=False)
class UserPaymentInformationUpdateAPIView(generics.UpdateAPIView):
    permission_classes = (IsAuthenticatedDriver,)
    serializer_class = UserPaymentInformationUpdateSerializer
    queryset = serializer_class.Meta.model.objects.all()


        def update(self, request, *args, **kwargs):
            partial = kwargs.pop("partial", False)
            instance = self.serializer_class.Meta.model.objects.get(
                user=self.request.user
            )
    
            self.mark_user_as_new()
            # awaiting_confirmation = True # I WANT SOMETHING LIKE THIS
            serializer = self.get_serializer(
                instance, data=request.data, partial=partial
            )
            serializer.is_valid(raise_exception=True)
            self.perform_update(serializer)
            return Response({"result": serializer.data})
class UserPaymentInformationUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserPaymentInformation
        fields = ("id", "full_name", "card_number", "account_number", "bik", "awaiting_confirmation")

如何修复更新方法?

在您的
用户付款信息更新序列化程序中
您可以设置
只读字段=('waiting_confirmation',)
,使序列化程序成为:

class UserPaymentInformationUpdateSerializer(serializers.ModelSerializer):
    class Meta:
        model = UserPaymentInformation
        fields = ("id", "full_name", "card_number", "account_number", "bik", "awaiting_confirmation")
        read_only_fields = ("awaiting_confirmation",)

这意味着它仍然会在序列化程序数据中返回,但不可能通过API请求对其进行更新。

谢谢,但我如何才能在更新方法中使waiting_confirmation=True?您可以将
置于实例中吗。在调用self之前等待确认=True
。是否执行更新(序列化程序)?