2011-04-04 56 views
18

我正試圖學習python/django。如何在django中分離出我的模型?

現在,我有我的所有車型在models.py

是否有可能有我的模型爆發了,這樣我可以有每個模型的單個文件在一個單獨的模型文件夾,以便我可以做是這樣的:

〜/ myproject的/ MyApp的/型號/ user.py 〜/ myproject的/ MyApp的/型號/ group.py

感謝

回答

30

這是可能的,只需確保在models目錄中導入您在__init__.py中創建的所有模型。在你的情況下,它應該是這樣的:

# __init__.py 
from user import UserModel 
from group import GroupModel 

這需要做的事情,因爲Django就在app.models一個應用程序的模型。

正如其他人所提到的,Django的版本之前到1.7,你還需要在app_label屬性在Meta類模型中的指定應用程序的名稱:

class UserModel(models.model): 
    # fields here 

    class Meta: 
     app_label = "myapp" 

http://docs.djangoproject.com/en/1.7/ref/models/options/#app-label

+1

這使我瘋狂,所以對於那些後來的人來說,在1.10中需要有一個'。':'.user'導入UserModel'。如上所述: https://docs.djangoproject.com/en/1.10/topics/db/models/#organizing-models-in-a-package – 2017-02-22 17:37:53

3

你可以有一個所謂的「模型」,但文件夾,然後在每個模型類,你將需要包括:

class Meta: 
    app_label="appname goes here" 

* ps。不要忘記像我一直這樣做的__init__.py文件。*

+0

我們不能使用一些繼承嗎?用類Meta定義一些base_model.py,然後這應該爲該類的所有衍生物做? – 2016-04-27 16:59:59