我有一个带有选择 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)
序列化器类也有 charfield 来表示状态,但带有source
显示可读值的参数
class VehicleSerializer(ModelSerializer):
status = serializers.CharField(source='get_status_display')
class Meta:
model = Vehicle
当我尝试通过补丁请求和数据更新车辆时{'status': "U"}
,没有执行任何更新。
但是,当我删除source
来自序列化器状态字段。
提供源对于在 Web 视图中显示正确的值是必要的。
我知道可以将序列化器中的状态名称更改为其他名称并在模板中使用它。此外,还可以选择覆盖序列化程序中的更新方法,但是我的问题是源代码正在做什么来阻止更新?
我认为您需要将状态添加到元中的字段列表中。
class VehicleSerializer(ModelSerializer):
status = serializers.CharField(source='get_status_display')
class Meta:
model = Vehicle
fields = ('status',)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)