Неожиданное поведение DRF в методе API PUT при передаче значения объекту

У меня есть модель, и я пытаюсь создать API с методом PUT для обновления значений.

Однако, когда я отправляю запрос с помощью postman, все значения возвращаются завернутыми внутрь ( ,). Например, если я передаю данные JSON

{
    "name" = "MyName"
}

и затем в API в методе PUT

data = request.data
animal.name = data['name']

возвращаемое значение для animal.name - ( MyName,) (оно сохраняется в базе данных в таком виде), что не является тем, что я передал/ожидаю (я ожидал MyName).

Я использовал print (data['name'], animal.name) для подтверждения того, что данные JSON получены правильно, и это так (вывод на печать MyName, ( MyName,) . Таким образом, проблема находится внутри API. У меня есть ощущение, что это может быть связано с sex = model.ChaerField(choices=...), поскольку я впервые использую этот метод.

Я был бы очень признателен за помощь в понимании того, почему это происходит и как это решить.

Ниже приведено мое определение сериализатора модели и представления.

models.py

MALE = 'M'
FEMALE = 'F'
SEX_CHOICES = [
    (MALE, 'Male'),
    (FEMALE, 'Female')
]
class Animal(models.Model):
    owner = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, related_name='animal')
    farm = models.ForeignKey(Shop, on_delete=models.SET_NULL, null=True, related_name='animal')
    custom_uuid = models.CharField(max_length=8, default= null, editable=False)
    name = models.CharField(max_length=150, blank=True)
    birth_date = models.DateField(null=True, blank=True, verbose_name='Date of birth')
    sex = models.CharField(max_length=1, choices= SEX_CHOICES, default=MALE)
    
    def __str__(self):
        return '%s , %s' % (self.user, self.uuid)

serializer.py

class AnimalSerializer(serializers.ModelSerializer):
    sex = serializers.SerializerMethodField()
   
    class Meta:
        model=Animal
        fields = '__all__'
        
    
    def get_sex(self,obj):
        return obj.get_sex_display()

views.py

@api_view(['PUT'])
@permission_classes([IsAuthenticated])
def updateAnimal(request, pk):
    user = request.user

    animal = Animal.objects.get(id=pk)
    
    data = request.data

    animal.name = data['name'],
    print (data['name'], animal.name)
       
    animal.save()

    serializer = AnimalSerializer(animal, many=False)
    return Response(serializer.data)

Я был бы очень признателен за помощь в понимании того, почему происходит так, что мои значения возвращаются обернутыми вокруг ( ,) и как это решить.

Вернуться на верх