Django 1.10迁移支持子目录中的应用程序

时间:2016-11-03 15:52:50

标签: django

我在apps目录中放了一个简单的项目和两个应用程序:

myproject/
| manage.py
|-- myproject/
|   | __init__.py
|   | settings.py
|   | urls.py
|   | wsgi.py
|-- apps/
|   | __init__.py
|   | app1/ # with models.py and views.py
|   | app2/ # with models.py and views.py

我已将INSTALLED_APPS设置更新为包含apps.app1apps.app2

apps.app1是唯一具有模型的应用:

class Thing(models.Model):
    stuff = models.CharField(max_length=255)

如果我运行./manage.py check并且它恢复正常。

但是,如果我尝试运行./manage.py makemigrations apps.app1,我会收到以下错误:

App 'apps.app1' could not be found. Is it in INSTALLED_APPS?

但是apps.app1显然在设置文件中,这里是设置文件(复制并粘贴):

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'apps.app1',
    'apps.app2',
]

我读过的其他内容似乎表明应该可以在子目录中安装Django应用程序。

这实际上不可能吗?或者,如果可能的话,我做错了什么?

1 个答案:

答案 0 :(得分:2)

当您运行makemigrations时,您应该使用应用label(例如app1),而不是name(例如apps.app1)。

./manage.py makemigrations app1