我在问题模型上有一个BooleanField:
class Question(models.model):
is_deleted = BooleanField()
为什么它接受非布尔类型的python对象?
>>>que_obj = Question.objects.create()
>>>que_obj.is_deleted='yes'
>>>que_obj.save()
>>>que_obj.is_deleted
>>>'yes'
答案 0 :(得分:2)
模型实例只是一个python对象。您可以将任何属性设置为任何值。
保存实例时,所有数据都会转换为适当的数据类型,以达到Django的最佳功能。对于BooleanField
,这意味着任何真实值(bool(value) is True
)都会保存为True
,而任何虚假值(bool(value) is False
)都会保存为False
。
保存模型时,将读取字段的当前值,将其转换为适当的数据类型,并保存到数据库中。该字段的原始值不会改变。从数据库重新加载模型时,该字段将保存在数据库中的实际值:True
。
答案 1 :(得分:0)