【发布时间】:2014-12-22 16:04:20
【问题描述】:
在以前的 Django 版本中,我们都使用 South 进行迁移,并且由于它不像我们希望的那样智能,我们有时需要告诉它显式忽略某些字段,因为这些字段对于我们来说太复杂了。它来处理。我们使用add_ignored_fields 完成了此操作,并且一切正常。
在我们的例子中,我们的模型上有一个“字段”,它是CharField 的子类,它实际上通过contribute_to_class 方法将两个附加字段附加到模型上。这是一个奇怪的过程,但它对我们的用例很有意义,并且在我们升级到 Django 1.7 之前工作得很好。
但是,在新的迁移系统中,我们对add_ignored_fields() 的使用不再有效,并且我们的单元测试正在爆炸式增长,因为它试图创建一个包含这些字段的测试数据库表。具体来说:
django.db.utils.OperationalError: duplicate column name: our_column_name
在这种情况下,our_column_name 是这个特殊的 CharField 子类创建的字段之一。
在理想情况下,我们可以让迁移代码正确处理这些字段,但如果存在 add_ignored_fields(),我会满足于 1.7 版本。
我还应该指出,我们在 Django 文档中找到了the explanation for deconstruct,但恐怕它对我没有任何意义。我不知道它是否适用于这种情况。
【问题讨论】:
标签: django migration django-south django-1.7