我在问题模型上有一个 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/

10-12 20:35