回到 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()
如果存在的话。
我还应该指出,我们发现的解释deconstruct https://docs.djangoproject.com/en/dev/topics/migrations/#custom-deconstruct-method在 Django 文档中,但恐怕它对我来说没有任何意义。我不知道它是否适用于这种情况。
我们发现这张姜戈门票 https://code.djangoproject.com/ticket/22555这几乎表明这是开发人员不支持的设计模式,因此我们只需重写模型以在模型上显式创建其他字段,然后引用“父”字段中的所述字段阿拉ImageField
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)