python – 从Django South的重复迁移中恢复
作者:互联网
由于将多个功能分支合并到我的项目中,我进行了以下迁移:
0001_initial.py
0002_auto__add_field_userprofile_telephone__add_field_userprofile_timezone.py
0003_auto.py
0004_auto__del_field_organisation_admin.py
0005_auto__add_field_organisation_permitted_domains.py
0005_auto__add_field_userprofile_currency.py
请注意,我有两个重复的0005迁移.这些运行正常,并在我的生产系统上正常部署.
$python manage.py migrate accounts --list [17:11:42]
accounts
(*) 0001_initial
(*) 0002_auto__add_field_userprofile_telephone__add_field_userprofile_timezone
(*) 0003_auto
(*) 0004_auto__del_field_organisation_admin
(*) 0005_auto__add_field_organisation_permitted_domains
(*) 0005_auto__add_field_userprofile_currency
我的表格列正确:
$psql
db_my_project=# \d+ accounts_organisation
db_my_project=# \d+ accounts_userprofile
... shows currency and permitted_domain, suggesting the migrations worked correctly
但是,如果我尝试创建新的迁移,South认为我没有将“allowed_domains”列添加到我的模型中:
$python manage.py schemamigration accounts --auto [17:16:15]
+ Added field permitted_domains on accounts.Organisation
Created 0006_auto__add_field_organisation_permitted_domains.py. You can now apply this migration with: ./manage.py migrate accounts
我该如何解决?
解决方法:
来自文档:http://south.readthedocs.org/en/0.7.6/autodetector.html
When the autodetector runs, it compares your current models with those
frozen in your most recent migration on the app, and if it finds any
changes, yields one or more Actions to the South
migration-file-writer.
迁移在模型中保留模型中字段的冻结版本.
因此:
在0005_auto__add_field_organisation_permitted_domains中,组织类将具有allowed_domains字段,但在0005_auto__add_field_userprofile_currency中则不会.当你运行:
$python manage.py schemamigrate accounts --auto
这将比较代码的当前状态与0005_auto_add_field_userprofile_currency中的字段存储记录,从而导致南方第二次添加字段.
如果您将’allowed_domains’字段的行从0005_auto__add_field_organisation_permitted_domains复制到0005_auto__add_field_userprofile_currency,这将解决您的问题.
标签:python,django,django-south 来源: https://codeday.me/bug/20190831/1779366.html