我遇到了Django 1.8.2应用程序的迁移问题。我使用了两个模型Product
和Fee
。 Product
最近对其{{1}}字段进行了更改。 unique_together
对Fee
字段没有任何更改。当我运行unique_together
时,我得到一个包含两个更改的文件:
./manage.py makemigrations
您会注意到它正在更改operations = [
migrations.AlterUniqueTogether(
name='fee',
unique_together=set([('product', 'fee_type', 'content_type', 'object_id', 'activation_date')]),
),
migrations.AlterUniqueTogether(
name='product',
unique_together=set([('producer', 'product_type', 'term')]),
),
]
的唯一约束约束,这很好。但是它也是为Product
做的。这会导致错误,因为数据库中已经存在唯一的约束约束。错误为Fee
每次运行django.db.utils.ProgrammingError: relation "product_fee_product_id_7b033c697cde4424_uniq" already exists
时,我都会获得./manage.py makemigrations
模型的AlterUniqueTogether
内容,即使我只是将其注释掉,也不会将其从文件中删除。如何阻止Fee
检测到此不存在的更改?
答案 0 :(得分:0)
您可以尝试创建仅仅为Fee
模型一起更改唯一身份的迁移,然后使用--fake
选项应用它
./manage.py migrate yourapp 00XX_your_migration --fake
在您伪造迁移后,更改不应包含在您创建的任何新迁移中。