可以在Django中自定义模型包路径

时间:2019-02-27 17:13:16

标签: django

Django中项目的默认文件夹结构类似于:

myproject/
    - myapp/
        - models.py
    - myproject/
        - settings.p

是否可以更改该结构?

我想做类似的事情:

myproject/
    - myapp/
        - infrastructure/
            - models.py
    - myproject/
        - settings.py

myproject/
    - myapp/
        - infrastructure/
            - models/
                - __init__.py
                - some_model.py
    - myproject/
        - settings.py

我知道我可以制作一个models软件包并将模型分成不同的文件。但我也希望更改该程序包的名称/路径。

1 个答案:

答案 0 :(得分:1)

是,不是。在这种情况下,您的应用将为myapp.infrastructure,并且需要在设置中将其添加到INSTALLED_APPS

对于Python,拥有models.py文件和models/文件夹的情况基本相同。在这种情况下,您将需要在__init__.py文件夹内的models/文件中导入不同的模型。

这个想法是,应该以某种方式将您的模型和其他代码导入项目中的某个位置,以便django管理命令查看它们(例如:用于准备数据库迁移-makemigrations命令)。因此,只要makemigrations可以看到您的模型,就可以将它们放置在任何地方。这只是python的一种方式,与django框架没有直接关系。

至于基本事物(模型,视图,应用程序,信号,管理员等)的名称-我认为唯一需要以其名称为models。由于它在ORM中直接由其名称使用。检查以下内容:Django Applications Documentation

因此,由于python的语法,这是可能的,但是django不推荐这样做。创建Django的设计实践的目的是使每个人都可以更轻松地编写一个可读的应用程序,在其中您可以轻松了解应该去的地方并且可以轻松地工作,而无需了解其他人设计的项目的内部规则。对于项目众多的开发人员和新成员可以在项目启动后随时加入的项目而言,这一点非常重要。因此,除非您很清楚自己在做什么,否则您可以自由地开发所需的任何自定义设计-毕竟,您所需要的只是让python能够将函数和类导入项目的其他部分。 >