【发布时间】:2015-05-05 15:07:03
【问题描述】:
我将 Django 1.7 与 MySQL 一起使用。
我有一个想要添加 BooleanField 的现有模型。我希望该字段默认为 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 的字段。我在这里缺少什么?谁能阐明我做错了什么?任何建议将不胜感激,非常感谢!
【问题讨论】:
-
在 MyModel 中创建新条目并保存时会发生什么?是否将 my_field 设置为 True?
-
@joelgoldstick - 是的,但是我正在使用的代码库的性质并不总是使用 ORM(我们正在过渡到 Django,但仍有遗留代码),这就是我想要默认设置在 db 级别
-
所以,django 似乎在做正确的事情,但是遗留代码添加了不默认的新记录。抱歉,我想不出解决办法。也许运行一个 cron 作业来更新旧代码中的新记录?
标签: mysql django django-models django-migrations