我正在开发一个相对较大的平面应用程序。为了保持关注点分离,我将模型和视图文件分成auth_models
, dashboard_models
, taxonomy_models
和更多。这些已放置在文件夹结构中,如下所示
APPNAME/
app/
models/
__init__.py
auth_models.py
dashboard_models.py
taxonomy_models.py
...
views/
__init__.py
dashboard_views.py
taxonomy_views.py
...
My app/models/__init__.py
有以下内容:
from auth_models import *
from dashboard_models import *
from taxonomy_models import *
然而,当我跑步时./manage.py sql app
,我没有得到任何输出。没有任何警告,什么都没有。
提出这个问题的原因是我正在实现数据库修改和迁移,其中 South 无法处理多个方面。因此,我本质上是从一个新的架构开始,稍后将实现一个数据转换脚本来迁移现有的数据集。为此,我需要架构来创建模型表。
See this https://stackoverflow.com/a/1160735/302243 answer.
Django 根据模型所在的路径来假设您的应用程序名称,因此在这种情况下您被迫向每个导入的模型添加应用程序标签,如下所示:
class MyModel(Model):
# Model fields
class Meta:
app_label = 'app'
背景:
截至撰写本文时,Django 有以下代码来检测模型的应用程序标签:
if getattr(meta, 'app_label', None) is None:
# Figure out the app_label by looking one level up.
# For 'django.contrib.sites.models', this would be 'sites'.
model_module = sys.modules[new_class.__module__]
kwargs = {"app_label": model_module.__name__.split('.')[-2]}
由此我们可以看出,它推断app_label
来自模块名称,该名称可能存在于应用程序层次结构的深处。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)