【问题标题】:What's the Django 1.7+ equivalent to South's add_ignored_fields()?Django 1.7+ 相当于 South 的 add_ignored_fields() 是什么?
【发布时间】: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


    【解决方案1】:

    我们发现this Django ticket 几乎表明这是一种开发人员不支持的设计模式,因此我们只需要重写模型以在模型上显式创建其他字段并然后从“父”字段中引用所述字段,例如ImageField

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-15
      • 2014-10-23
      • 2014-10-29
      • 2014-09-14
      • 1970-01-01
      • 2020-09-23
      • 1970-01-01
      相关资源
      最近更新 更多