2013-03-18 82 views
0

可以說我有這樣的Django設置:Django的:如何在另一個模塊中創建自定義的模型

appA - models.py 
    - views.py 
    - etc... 

global - models.py 

我要的是從global.modelsappA.models導入模型,使他們作爲一個正常的處理由syncdb和南部的appA模型。

global.models:

from django.db import models 
class Foo(models.Model): 
    #django model stuff 

appA.models: 嘗試1:

from global.models import * 

>>manage.py schemamigration appA --auto 
>>does not see Foo 

嘗試2:

from global.models import Foo 

class Foo(Foo): 
    pass 

>>manage.py schemamigration appA --auto 
>>Error: One or more models did not validate: 
>>appA.Foo: 'foo_ptr' has a relation with model <class 'global.models.Foo'>, which has either not been installed or is abstract. 

什麼是實現這一目標的正確方法是什麼?

回答

0
from .models import Foo 

class Foo(models.Model): 
    #stuff 

    class Meta: 
     abstract = True 
+0

>> manage.py schemamigration appA --auto- >>已刪除模型appA.Foo >>已創建0005_auto__del_foo.py。您現在可以將此遷移應用於:./manage.py migrate runengine – RickyA 2013-03-18 12:48:28

+0

我已經擁有此模型。分解重複使用。 – RickyA 2013-03-18 12:49:03

+0

爲什麼不把你的Foo作爲一個抽象? – catherine 2013-03-18 12:50:33

0

全球是一個Python的語句,你不應該用它來命名您的包之一。嘗試使用不同的名稱,並且不要忘記將__init__.py文件放在目錄中以將其轉換爲python包。

+0

謝謝,這些當然是虛假的名字。不會使用全局。 – RickyA 2013-03-18 12:49:47

+0

導入並不是真正的問題。這工作正常。 – RickyA 2013-03-18 12:50:41

相關問題