Django Rest Framework partial=True не работает

Я новичок в Django & DRF и у меня очень глупая проблема с моим проектом, в котором он не позволяет мне делать частичное обновление. Я использую общие представления (UpdateAPIView) и я застрял с этим уже 2 недели.

<

Надеюсь, что кто-нибудь сможет помочь и заранее благодарю вас.

Модель:

class BusinessPartner(models.Model):
   first_name = models.CharField(max_length=150)
   last_name = models.CharField(max_length=150)
   mobile_number = models.CharField(max_length=150, unique=True)
   email = models.EmailField(max_length=150, unique=True)
   business_name = models.CharField(max_length=255, blank=True)
   type_of_business = models.CharField(max_length=150, blank=True)
   street_address = models.CharField(max_length=255, blank=True)
   city = models.CharField(max_length=150, blank=True)
   state_province = models.CharField(max_length=150, blank=True)
   postal_zip = models.IntegerField(null=True, blank=True)
   services_offered = models.TextField(null=True, blank=True)
   account = models.ForeignKey(Account, on_delete=models.CASCADE)

   class Meta:
      ordering = ["-account"]

   def __str__(self):
      return self.first_name + " " + self.last_name

Serializer:

class BusinessPartnerSerializer(serializers.ModelSerializer):
   class Meta:
      model = BusinessPartner
      fields = [
        "id",
        "first_name",
        "last_name",
        "mobile_number",
        "email",
        "business_name",
        "type_of_business",
        "street_address",
        "city",
        "state_province",
        "postal_zip",
        "services_offered",
        "account",
    ]
      extra_kwargs = {"id": {"read_only": True}}

def update(self, instance, validated_data):
    partner = BusinessPartner.objects.get(account=instance)
    print("Previous mobile number: ", getattr(partner, "mobile_number"))
    print("New mobile number: ", validated_data["mobile_number"])

    if getattr(partner, "mobile_number") == validated_data["mobile_number"]:
        validated_data.pop("mobile_number")

    if getattr(partner, "email") == validated_data["email"]:
        validated_data.pop("email")

    for (key, value) in validated_data.items():
        setattr(partner, key, value)

    partner.save()
    return partner

Вид:

class UpdatePartnerProfileView(generics.UpdateAPIView):
   permission_classes = [IsAuthenticated]
   serializer_class = BusinessPartnerSerializer
   queryset = BusinessPartner.objects.all()

   def update(self, request, *args, **kwargs):
      serializer = self.serializer_class(
        request.user, data=request.data, partial=True
    )

      if serializer.is_valid(raise_exception=True):
         serializer.save()
         return Response(serializer.data, status=status.HTTP_200_OK)

   return Response(serializer.error, status=status.HTTP_400_BAD_REQUEST)
Вернуться на верх