回到之前版本的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子类创建的字段之一。
在一个完美的世界中,我们可以让迁移代码正确处理这些字段,但是如果它存在的话,我会适应1.7版add_ignored_fields()
。
我还应该指出,我们在Django文档中找到了the explanation for deconstruct
,但我担心它对我没有任何意义。我无法弄清楚它是否适用于这种情况。
答案 0 :(得分:0)
我们发现this Django ticket几乎说明这是开发人员不支持的设计模式,因此我们只需要将模型重写为明确的在模型上创建其他字段,然后从" parent"中引用所述字段。字段a la ImageField
。