避免 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 重新创建日期字段的主要内容,如果未能解决你的问题,请参考以下文章

如何避免大型CKAssets的重新传输,跟随其他数据更新

Django Migration (makemigrations) 应该与创建模型分开提交吗?

Django Migrations:使用 makemigrations 创建相同的迁移

Django 1.7 - makemigrations 为非托管模型创建迁移

如何使用 Django Migrations 重新创建已删除的表?

Django makemigrations 不创建管理数据库