django - BooleanField 中的 'default=True' 有什么意义

标签 django django-models

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

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

附注我知道通过使用 NullBooleanField 我将能够解决问题;但是,如果除非必须为该字段指定值,否则无法插入行,那么 default 的意义何在?

最佳答案

default 不在 SQL 级别处理 - it's handled at the model level 。因此,数据库环境中的原始 SQL 查询将引发错误。在您的 Django 环境中尝试一下:

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

在模型级别完成后,默认值将插入到您的 SQL 数据库中

关于django - BooleanField 中的 'default=True' 有什么意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17287473/

相关文章:

Django 树建模

python - Django 多数据库支持是否仅为数据库中的某些特定应用程序生成表

python - django 条件 url verify_exists

django - Viewsets `create()`和 `update()`与序列化器 `create()`和 `update()`有什么区别?

python - 为什么当我在 Mac OS X 终端应用程序中键入时不显示标准输入?

python - 在 Django 管理命令中添加虚假换行符

django - 如何在 Django 中同时支持新旧数据库模式?

python - 无法使用 models.Manager 检索 Django 对象列表

html - Django 表单与传统表单

python - 如何制作字段名称与模型字段名称不同的 Django 模型表单?