Tengo un campo modelo con opciones charfield
class Vehicle(models.Model): name = models.CharField(max_length=100) STATUS_CHOICES = ( ("N", "New"), ("U", "Used"), ("P", "Just Purchased") ) status = models.CharField(max_length=3, choices=STATUS_CHOICES) La clase de serializador también tiene charfield para el estado pero con un argumento source para mostrar el valor legible
class VehicleSerializer(ModelSerializer): status = serializers.CharField(source='get_status_display') class Meta: model = Vehicle Cuando trato de actualizar vehículos a través de una solicitud de parche con datos {'status': "U"} , no se realiza ninguna actualización. Sin embargo, la actualización ocurre cuando elimino la source del campo de estado del serializador. Es necesario proporcionar la fuente para mostrar el valor adecuado en la vista web.
Conozco la opción de cambiar el nombre del estado en el serializador a otro y usarlo en la plantilla. También existe la opción de anular el método de actualización en el serializador, sin embargo, mi pregunta es ¿qué está haciendo la fuente para evitar la actualización?
Creo que necesita agregar estado a la lista de campos en meta.
class VehicleSerializer(ModelSerializer): status = serializers.CharField(source='get_status_display') class Meta: model = Vehicle fields = ('status',)