2013-10-16 57 views
2

由於我們的應用有很多模型,我們將它們放在模型包的子包中,即Cheddar模型不會在models.Cheddar中,而是在models.cheese.CheddarDjango South:我如何訪問遷移中的子包中的模型

看來我無法在南數據遷移中訪問這些模型,即使我創建了models/__init__.py根據this answer包含行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." 

有誰知道如何解決這個問題?

回答

1

事實證明,問題是這樣的事實,即Cheddar模型未在DataMigration實例的models屬性中列出:

class Migration(DataMigration): 
    # ... 

    models = { 
     # ... 
    } 

一旦我加在裏面了正確的模型定義(這是在以前的爲我遷移),數據遷移工作。