7

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

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

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

在此处输入图像描述

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

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

我收到此错误:

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

PS我明白通过使用NullBooleanField我将能够解决问题;但是,default如果我不能插入一行,除非我必须为该字段指定一个值,那有什么意义呢?

4

1 回答 1

5

default不在 SQL 级别处理 - 它在模型级别处理。因此,数据库环境中的原始 SQL 查询会引发错误。在你的 Django 环境中试试这个:

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

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

于 2013-06-25T01:50:54.667 回答