避免 makemigrations 重新创建日期字段
Posted
技术标签:
【中文标题】避免 makemigrations 重新创建日期字段【英文标题】:Avoid makemigrations to re-create date field 【发布时间】:2015-02-04 12:11:21 【问题描述】:使用 Django 1.7,每当我执行 makemigrations
时,我的一个模型都会发生变化:
(venv) >> python manage.py makemigrations myapp
Migrations for 'myapp':
0005_auto_20141206_1129.py:
- Alter field date on observation
这是由于我使用 datetime.today()
的观察类:
class Observation(model.Models):
date = models.DateField(default=datetime.datetime.today())
有没有一种简单的方法可以避免为此创建迁移文件,但同时在创建 Observation 时保持默认的 today()
?
【问题讨论】:
【参考方案1】:问题在于,每次运行此代码时,默认值都会更改为today()
的当前值。那是因为您实际上是在调用该函数,而不是将其作为可调用对象传递。只需去掉尾随的()
就可以了。
(请注意,您应该使用datetime.date.today
,因为您需要date
值,而不是datetime
值。)
【讨论】:
以上是关于避免 makemigrations 重新创建日期字段的主要内容,如果未能解决你的问题,请参考以下文章
Django Migration (makemigrations) 应该与创建模型分开提交吗?
Django Migrations:使用 makemigrations 创建相同的迁移
Django 1.7 - makemigrations 为非托管模型创建迁移