2011-04-04 55 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