Python 强制Django识别多个“;模型“;同一应用程序中的文件夹?
我的Django项目安排得很奇怪:Python 强制Django识别多个“;模型“;同一应用程序中的文件夹?,python,django,Python,Django,我的Django项目安排得很奇怪: /project |----manage.py |----/project |----settings.py |----urls.py |----/main |----/users |----/models |----__init__.py |----model1.py
/project
|----manage.py
|----/project
|----settings.py
|----urls.py
|----/main
|----/users
|----/models
|----__init__.py
|----model1.py
|----model2.py
|----model3.py
|----/views
|----__init__.py
|----view1.py
|----view2.py
|----/forms
|----__init__.py
|----form1.py
|---form2.py
|----urls.py
|----/activities
|----/models
|----__init__.py
|----model1.py
|----model3.py
|----/views
|----__init__.py
|----view1.py
|----view2.py
|----/forms
|----__init__.py
|----form1.py
|----urls.py
|----/migrations
|----urls.py
|----admin.py
|----apps.py
这几乎是一个正常的设置,除了用户
和活动
在技术上不是应用程序main
是应用程序。我的目标是使所有迁移保持线性
当我运行python manage.py
时,Django会在main/users/models
中看到模型,但不会在main/activities/models
中看到模型
在考虑迁移时,是否有办法强制Django同时查看这两个文件夹。我可以创建
models
文件夹w/\uuuu init\uuuu.py
,导入main
中的所有内容,但是,如果可能的话,我希望保留当前设置并只更改Django的外观 在这种情况下,您需要克服两个问题
模型之外的模块中查找模块。实际上,它是一个硬编码的模块名
用户
和活动
不是应用程序,但它们的结构却在尖叫:它们不仅各自有自己的模型
,还有自己的视图
、表单
和URL
。如果你让它们成为自己的、成熟的应用程序,你最终会得到一个更好的结构
如果你真的想保留现有的结构,那么你有两个选择。最简单的方法是简单地创建一个main/models.py
,然后从那里导入各自的模型
main/models.py
from .users.models import *
from .activities.models import *
就这么简单。更复杂的选项是覆盖
main/apps.py
中AppConfig
类中的.get\u models()
和方法。如果你想走这条路,我可以提出一个例子。在这种情况下,你需要克服两个问题
没有设置让Django在除模型之外的模块中查找模块。实际上,它是一个硬编码的模块名
即使您可以覆盖Django它要查找的模块,它仍然只在单个模块中查找,您有两个模块
您有几个选项来实现这一点。首先,我强烈认为把这一个应用程序分成两个。你说用户
和活动
不是应用程序,但它们的结构却在尖叫:它们不仅各自有自己的模型
,还有自己的视图
、表单
和URL
。如果你让它们成为自己的、成熟的应用程序,你最终会得到一个更好的结构
如果你真的想保留现有的结构,那么你有两个选择。最简单的方法是简单地创建一个main/models.py
,然后从那里导入各自的模型
main/models.py
from .users.models import *
from .activities.models import *
就这么简单。更复杂的选项是覆盖main/apps.py
中AppConfig
类中的.get\u models()
和方法。如果你想走这条路,我可以想出一个例子。确保子模块在\uuuu init\uuuuuuuuuuuuuy.py
中导入。确保子模块在\uuuu init\uuuuuuuuuuuuy.py
中导入。从\uuu init\uuuuuuuuuuuuuuuuuuuuuuuuuy.py>导入实际上不起作用(我收到了一个django.core.exceptions.AppRegistryNotReady:应用程序还没有加载。
错误)。我更愿意这样做,但添加models.py
并不是什么大问题。我想,现在,我会保留这个结构,如果需要,将用户
和活动
发送到他们自己的应用程序将非常容易(我正在明确命名他们的数据表,所以这不应该是一个问题)感谢更新。我将删除该建议。从\uuu init\uuuuuuuuuupy
导入实际上不起作用(我收到一个django.core.exceptions.AppRegistryNotReady:应用程序尚未加载。
错误)。我更愿意这样做,但添加models.py
并不是什么大问题。我想,现在,我会保持这种结构,如果需要的话,将用户
和活动
发送到他们自己的应用程序会非常容易(我会显式地命名他们的数据表,所以这应该不会是个问题)谢谢更新。我将删除该建议。