通过app_label在子目录中建模?

nik*_*ola 15 django django-models django-orm

为了将我的模型子文件夹中我试图用app_label元字段描述这里.

我的目录结构如下所示:

  • 项目
    • 应用
      • FOO
        • 楷模
          • __init__.py
          • bar_model.py

在bar_model.py中,我将我的模型定义为:

from django.db import models

class SomeModel(models.Model):

    field = models.TextField()

    class Meta:
        app_label = "foo"
Run Code Online (Sandbox Code Playgroud)

我可以像这样成功导入模型:

from apps.foo.models.bar_model import SomeModel
Run Code Online (Sandbox Code Playgroud)

但是,运行:

./manage.py syncdb
Run Code Online (Sandbox Code Playgroud)

不会为模型创建表.在详细模式中,我确实看到应用程序"foo"被正确识别(它在settings.py中的INSTALLED_APPS中).将模型移动到foo下的models.py确实有效.

是否有一些特定的约定没有记录在app_label中,或者整个机制阻止了这个模型结构被syncdb识别?

Van*_*ale 21

请参阅Django票证#10985:说明如何在目录中组织模型

可能是因为您没有将模型导入__init__.py

  • 谢谢!是的,你需要将它们导入`__init __.py`并通过模型的'Meta`类给它们一个`app_label`. (2认同)