我必须修改ModelSerializer的功能,我的期望是,
我的模型中有两个字段。两者都是charFields。
class MyModel(models.Model):
name = models.CharField(blank=False,
null=False,
max_length=20)
value = models.CharField(blank=True,
null=True,
max_length=20)
我的序列化器是,
class MyModelSerializer(ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
我必须使用此序列化程序创建MyModel的对象。
现在的问题是,如果我在我的字段中传递'bool'值,则显示错误消息'Not a valid string。' (正如Modelserializer所预期的那样)
{“name”:True,“value”:False}
我的要求是处理'bool'值并将'bool'转换为'str'。应该解决这个问题的诀窍。
答案 0 :(得分:0)
使用 to_internal_value 功能,例如,这有效:
class MyModelSerializer(ModelSerializer):
class Meta:
model = MyModel
fields = '__all__'
def to_internal_value(self, data):
for field in ('name', 'value'):
if field in data and isinstance(data[field], bool):
data[field] = str(data[field])
return super().to_internal_value(data)