Django makemigrations 未检测到项目/应用程序/myapp
Posted
技术标签:
【中文标题】Django makemigrations 未检测到项目/应用程序/myapp【英文标题】:Django makemigrations not detecting project/apps/myapp 【发布时间】:2017-02-02 09:49:25 【问题描述】:已解决 有趣:
./manage.py makemigrations apps.myapp
-> “App 'apps.myapp' 可以
找不到。它在 INSTALLED_APPS 中吗?”
./manage.py makemigrations myapp
-> 有效。
./manage.py makemigrations
-> “未检测到更改”(如果 myapp 在项目根目录中,它会检测到更改)
原问题: 项目结构
myproject/
myproject/
apps/
myapp/
__init__.py
admin.py
models.py
urls.py
views.py
tests.py
myapp2/
myapp3/
__init__.py
static/
templates/
virtualenv/
manage.py
myproject/apps/myapp/models.py
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=200)
created = models.DateTimeField(auto_now_add=True)
Settings.py
INSTALLED_APPS = [
# ...
'apps.myapp',
'apps.myapp2',
'apps.myapp3',
]
makemigrations
找不到不在项目根目录中的“myapps”。
同时migrate
确实找到了。
$ ./manage.py makemigrations apps.myapp
App 'apps.myapp' could not be found. Is it in INSTALLED_APPS?
$ ./manage.py migrate apps.myapp
CommandError: App 'apps.myapp' does not have migrations.
“让我们将应用程序放入应用程序文件夹”的做法是否不再有效,是我做错了什么,还是makemigrations
命令的错误?
注意 1:在运行 makemigrations
之前,我删除了 myapp 的“迁移”文件夹,但我很确定这没关系。当应用程序位于项目根目录时,它确实被重新创建了。
注 2:我研究了 google 和 ***,我只发现了类似的问题,解决方案是“将应用程序添加到 settings.py”、“在迁移之前运行 makemigrations”或“Django 1.6 和1.7"。我认为这些都不适用于我的情况。
【问题讨论】:
RE:注意 1,是的,这很重要 - 如果没有迁移文件夹,它不会创建也不会创建迁移。 如果 myapp 在项目根目录中,它会创建迁移文件夹。 我开始了一个新的应用程序,移动到“apps”目录下,它有“migrations”文件夹。我遇到了同样的错误。 你是否在 Meta 类中通过了 app_label:如果通过了,那么你也必须提供 app_label。 【参考方案1】:您可能已删除应用内的迁移文件夹或 <app>/migrations/
文件夹内的 __init__.py
,创建一个新的
myproject/
apps/
myapp/
migrations/
__init__.py
你总是可以单独做迁移而不做上述步骤
python manage.py makemigrations myapp
【讨论】:
【参考方案2】:试试
INSTALLED_APPS = [
# ...
'myproject.apps.myapp',
]
和
python manage.py makemigrations myapp
【讨论】:
试过了:ImportError: No module named 'myproject.apps'
你能说得更具体些吗?我应该分享我的哪一部分设置,以便您更好地了解它可能有什么问题?
有同样的问题,发布的答案是正确的。如果您收到导入错误,请尝试“python manage.py shell”以获取有关该错误的更多详细信息。
为什么我们必须使用myproject
作为前缀?为什么django不能在apps文件夹中找到应用程序?【参考方案3】:
现在可以了。它以前不起作用,因为我没有对我的模型进行任何更改。 我是 django 的新手,正在尝试从我观看的视频中执行命令。 Django 文档告诉您 makemigrations 根据您对模型所做的更改创建新的迁移。因此,我在 models.py 和 admin.py 中进行了更改,它现在可以工作了。
【讨论】:
以上是关于Django makemigrations 未检测到项目/应用程序/myapp的主要内容,如果未能解决你的问题,请参考以下文章
makemigrations 无法检测到 django 中的变化
Django中的Python社交身份验证,makemigrations检测到没有变化
makemigrations 响应 指定 app_label 时未检测到更改