2

由于我们的应用程序有很多模型,我们将它们放在模型包的子包中,即Cheddar模型不会在 中models.Cheddar,而是在 中models.cheese.Cheddar

似乎我无法在 South 数据迁移中访问这些模型,即使我models/__init__.py根据这个答案创建了一个包含该行的from cheese import *.

在我的数据迁移文件中,该行for cheddar in orm.Cheddar.objects.all():仍然导致以下错误:

AttributeError: The model 'Cheddar' from the app 'core' is not available in this migration. (Did you use orm.ModelName, not orm['app.ModelName']?)

尝试orm['core.models.cheese.Cheddar']改用会导致此错误:

KeyError: "The model 'cheddar' from the app 'core' is not available in this migration."

有谁知道如何解决这个问题?

4

1 回答 1

1

事实证明,问题在于Cheddar模型没有在DataMigration实例的models属性中列出:

class Migration(DataMigration):
    # ...

    models = {
        # ...
    }

一旦我在其中添加了正确的模型定义(这对我来说是在之前的迁移中),数据迁移就起作用了。

于 2013-10-16T13:06:01.223 回答