BooleanField中'default = True'的重点是什么?

时间:2013-06-25 00:50:31

标签: django django-models

我有一个简单的问题:在我的模型中,我正在为我的一个表定义结构;但是,我想为Booleanfieldown设置默认值,但它似乎无法正常工作。这是模型中的代码:

class Books(models.Model):
    title = models.CharField(max_length=100)
    own = models.BooleanField(default=True)

当我在mysql中desc我的表时,这就是我得到的(注意自己有默认的Null ):

enter image description here

此外,当我尝试执行以下操作时:

INSERT INTO `counters_books` (`title`) VALUES ('My Brain is Open')

我收到此错误:

ERROR 1364 (HY000): Field 'own' doesn't have a default value

P.S。我理解通过使用NullBooleanField,我将能够解决问题;但是,如果我不能插入一行,除非我必须为该字段指定一个值,否则default的重点是什么?

1 个答案:

答案 0 :(得分:5)

default未在SQL级别处理 - it's handled at the model level。因此,db环境中的原始SQL查询将引发错误。在Django环境中试试这个:

>> book_obj = Book('Harry Potter')
>> book_obj.save()

在模型级别完成后,默认值将插入到SQL DB