django 1.7迁移:在没有任何变化的情况下检测到变化

时间:2014-10-14 21:36:05

标签: django django-1.7 django-migrations

如何通过django 1.7中的makemigrations命令检测到更改?

我有一个问题,它总是告诉我我的一个领域有变化,而没有。当我运行该命令时,它只是反复写入相同的迁移文件而没有任何更改。

该字段是一个自定义字段,我在其上实现了解构方法并且有一些参数作为对象,因此我使用了可解构的装饰器。

我在github上创建了一个复制问题的项目:https://github.com/YAmikep/django-testmigrations

我做错了什么?这是一个错误吗?

这是我跑的:

/projects/testmigrations$ python manage.py makemigrations app1
Migrations for 'app1':
  0001_initial.py:
    - Create model ModelA
/projects/testmigrations$ python manage.py migrate
Operations to perform:
  Apply all migrations: admin, contenttypes, auth, app1, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying app1.0001_initial... OK
  Applying sessions.0001_initial... OK
/projects/testmigrations$ python manage.py makemigrations
Migrations for 'app1':
  0002_auto_20141014_2123.py:
    - Alter field field1 on modela
/projects/testmigrations$ python manage.py makemigrations
Migrations for 'app1':
  0003_auto_20141014_2123.py:
    - Alter field field1 on modela

迁移文件0002_auto_20141014_2123.py和0003_auto_20141014_2123.py包含完全相同的操作:

operations = [
    migrations.AlterField(
        model_name='modela',
        name='field1',
        field=app1.models.CustomField(max_length=50, value_manager=app1.models.ValueManager(values=[app1.models.Value(val=1), app1.models.Value(val=2)])),
    ),
]

1 个答案:

答案 0 :(得分:1)

问题似乎与https://code.djangoproject.com/ticket/23473

中的问题相同

解决方案是在标记为可解构的类上添加__eq__方法。