mysql - mysql 的 Django BooleanField 默认值

标签 mysql django django-models django-migrations

我正在使用 Django 1.7 和 MySQL。

我有一个现有模型,我想向其添加一个 bool 字段。我希望该字段默认为 true。看起来很简单吧?所以我像这样创建我的领域:

class MyModel(models.Model):
    my_field = models.BooleanField(default=True)

然后我运行 makemigrations 并生成以下迁移:

operations = [
    migrations.AddField(
        model_name='mymodel',
        name='myfield',
        field=models.BooleanField(default=True),
        preserve_default=True,
    ),
]

看起来合法,但是当我应用迁移时,在我的数据库中创建的字段没有默认值,它看起来像这样:

my_field tinyint(1) NOT NULL,

现在,当我应用迁移时,现有记录的字段设置为 1,但我想要的是迁移创建一个默认为 true 或 1 的字段。我在这里缺少什么?谁能阐明我做错了什么?任何建议将不胜感激,非常感谢!

最佳答案

Django 从不在数据库级别设置默认值。如果你想支持遗留代码中的默认值,你可以添加一个 RunSQL将默认值添加到数据库列的迁移操作。

关于mysql - mysql 的 Django BooleanField 默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28857650/

相关文章:

django - 使用字符串访问模型的外键相关字段?

mysql - 一张具有多个外键父级的 MySQL 表,还是多个具有一个父级的表?

php - 这是在 PHP 中构造 mysql_query 的安全方法吗

python - Django-从子查询中注释多个字段

Django ORM 哪种技术更好?

python - 在 django 中组织关系的最佳方式是什么?平坦的还是树状的?

python - Django:直接从 request.POST ["item"处理数据的风险]

python /MySQL : Query executes but nothing happens?

javascript - 在node.js中从mysql接收数据绘制图形

django - 使用 Django Rest 框架中定义的 mixins 类