【发布时间】:2018-04-01 21:42:46
【问题描述】:
我有一个模型,其中一个字段定义为blank=True, null=True。我将两者都更改为False 并编写了一个返回随机字符串的可调用函数。我将该函数设置为该字段的default=,然后运行makemigrations 和migrate,但我一直在我的表中看到空白字段。
这是预期的行为吗?如果是这样,我如何填充所有现有字段?
我正在使用 Django 1.10
【问题讨论】:
-
如果数据库中没有该字段的值,默认值是 ORM 层返回的值。应用 makemigrations 和 migrate 不应更改数据库中的值。如果您想更改字段值,可以查看此
https://stackoverflow.com/questions/29787853/django-migrations-add-field-with-default-as-function-of-model。 -
@ArpitGoyal 这不是日期字段(也不是时间),所以
auto_now对我不起作用。 -
你可以做的事情是设置
null=False和blank=False并运行迁移,这样Django会显示一条消息,说你必须为那些空字段提供一个值,然后你输入str('random_message')并退出从外壳