我在问题模型上有一个 BooleanField:
class Question(models.model):
is_deleted = BooleanField()
为什么它接受非 bool 类型的 python 对象?
>>>que_obj = Question.objects.create()
>>>que_obj.is_deleted='yes'
>>>que_obj.save()
>>>que_obj.is_deleted
>>>'yes'
最佳答案
模型实例只是一个 python 对象。您可以将任何属性设置为任何值。
保存实例时,所有数据都将转换为适当的数据类型,以发挥 Django 的最佳能力。对于 BooleanField
,这意味着任何真值 ( bool(value) is True
) 都保存为 True
,任何假值 ( bool(value) is False
) 保存为 False
。
保存模型时,会读取字段的当前值,将其转换为适当的数据类型,然后保存到数据库中。该字段的原始值不会改变。当您从数据库重新加载模型时,该字段将具有保存在数据库中的实际值: True
。
关于python - Django BooleanField 接受非 bool 类型对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32356319/