我将一个简单的项目和两个应用程序放在一个 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.app1
和 apps.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
明显在settings文件中,这里是settings文件(复制粘贴):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 应用程序。
这实际上不可能吗?或者,如果可能的话,我做错了什么?
最佳答案
当您运行 makemigrations
时,您应该使用应用程序 label
(例如 app1
),而不是 name
(例如 apps.app1
)。
./manage.py makemigrations app1
关于Django 1.10 对子目录中应用程序的迁移支持,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40405982/