Django 通过app_标签在子目录中的模型?
为了将我的模型放在子文件夹中,我尝试使用app_label元字段,如前所述 我的目录结构如下所示:Django 通过app_标签在子目录中的模型?,django,django-models,django-orm,Django,Django Models,Django Orm,为了将我的模型放在子文件夹中,我尝试使用app_label元字段,如前所述 我的目录结构如下所示: from django.db import models class SomeModel(models.Model): field = models.TextField() class Meta: app_label = "foo" 计划 应用程序 福 模型 __初始值 bar_model.py 在bar_model.py中,我将我的模型
from django.db import models
class SomeModel(models.Model):
field = models.TextField()
class Meta:
app_label = "foo"
- 计划
- 应用程序
- 福
- 模型
- __初始值
- bar_model.py
- 模型
- 福
- 应用程序
from django.db import models
class SomeModel(models.Model):
field = models.TextField()
class Meta:
app_label = "foo"
我可以这样成功导入模型:
from apps.foo.models.bar_model import SomeModel
但是,运行:
./manage.py syncdb
不为模型创建表。然而,在详细模式下,我确实看到应用程序“foo”被正确识别(它位于settings.py中已安装的应用程序中)。将模型移动到foo下的models.py是可行的
是否有一些特定的约定没有记录在app_label或整个机制中,以防止syncdb识别此模型结构?
syncdb
不会为不在中的模型创建表。模型
,因此将其导入其中,例如,从apps.foo.models导入一些模型参见Django票证
可能是您没有将模型导入到
\uuu init\uuuuuupy
?如果您有较新版本的Django,假设您有一个子文件夹名为subfolder
,这里有一个解决方案:
在文件夹app的apps.py
中:
from django.apps import AppConfig
class MyappConfig(AppConfig):
name = 'myapp'
def ready(self):
from myapp.subfolder import models
不,那也不行,也就是说syncdb没有拾取某个模型。编辑:我现在意识到你指向的方向与Van Gale相同。我已将他的答案标记为正确答案,因为它还包含一个链接,指向有关app_label正确文档的讨论。谢谢!是 啊您需要将它们导入
\uuuu init\uuuuu.py
中,并通过模型的Meta
类为它们提供一个app\u标签。重要信息是,从@mustafa.0x添加的app\u标签必须与作为模块名提供的标签名称相同,否则将返回空OrderedDict()如果您在导入django.apps.apps后获取apps.get_app_config('app_label').models