共享Django项目结构

时间:2018-10-12 20:45:46

标签: python django

这就是我项目的结构。这个问题将忽略'lib'目录:

.originalOrder

我希望能够运行:

const newSrcArray = _.map(srcArray, (item, idx) => { const newItem = _.cloneDeep(item); newItem.originalOrder = idx; return newItem; }); //sort newSrcArray return newSrcArray;

修改manage.py并不难,因此它将根目录添加到系统路径,将django环境变量设置为'app.prodsite',然后从sys.argv中删除该参数,然后继续进行下一步。 manage.py通常会这样做。我无法摆脱最后一个参数而不会导致错误:

project
    app
        data -> migrations, models, __init__.py
        prodsite -> settings.py, urls.py, wsgi.py, __init__.py
        testsite -> same as above
    lib
        data -> migrations, models, __init__.py
        prodsite -> settings.py, urls.py, wsgi.py, __init__.py, common models
        testsite -> same as above
    tools
        manage.py

这些是其他相关文件:

python tools/manage.py app.prodsite (makemigrations/migrate) app

如果我尝试运行“ python bldtool / manage.py app.prodsite makemigrations app.data”,则会出现错误消息,询问app.data是否在INSTALLED_APPS中。

如果我仅在INSTALLED_APPS中包含“ app”,则不会生成任何错误,但是django不会检测到任何更改,也不会生成迁移目录。 (我尝试使用 init .py创建迁移目录,但也没有成功)

我该怎么做才能使这项工作按预期进行?

2 个答案:

答案 0 :(得分:2)

根据Django文档:

  

一个字符串列表,指定此Django安装中启用的所有应用程序。每个字符串应为指向以下内容的Python虚线路径:

     
      
  • 应用程序配置类(首选),或
  •   
  • 包含应用程序的软件包。
  •   

此外,应在运行makemigrations之前创建迁移目录(其中包含__init__.py文件),而不指定应用程序名称,否则,makemigrations命令将不会检测到任何更改。但是,如果您指定应用程序名称,即使没有迁移目录,makemigrations也可以使用。

答案 1 :(得分:0)

在这种情况下适用于我的配置是:

# project.app.data:
class M(Model):
    class Meta:
        app_label = 'data' # Not full path
    a: bool
    b: str
    c: float

# project.app.data.apps
class DataConfig(AppConfig):
    name = 'app.data'

# project.app.data.__init__
# Empty

# project.app.prodsite.settings
ROOT_URLCONF = 'app.prodsite.urls'
WSGI_APPLICATION = 'app.prodsite.wsgi.application'
INSTALLED_APPS += ['app.data', 'app'] # No need for app.micsite

以上内容(以及修改后的manage.py)使我能够执行:

python tools/manage.py app.prodsite [makemigrations|migrate] data