Django makemigrations没有检测到项目/ apps / myapp

时间:2016-09-24 17:54:59

标签: django django-models django-migrations

解决

有趣:

  • ./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 /应用/ 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的“migrations”文件夹,但我很确定无关紧要。当应用程序位于项目根目录中时,它确实被重新创建。

注意2:我研究过谷歌和stackoverflow,我只发现了类似的问题,解决方案是“将应用程序添加到settings.py”,“迁移前运行makemigrations”或“Django 1.6之间的某些迁移问题” 1.7" 。我认为这些都不适用于我的情况。

3 个答案:

答案 0 :(得分:3)

INSTALLED_APPS = [
    # ...
    'myproject.apps.myapp',
]

python manage.py makemigrations myapp 

答案 1 :(得分:1)

您可能已经删除了应用程序内的migrations文件夹,或者删除了migrations文件夹内的 init .py,创建了一个新的

myproject/
apps/
    myapp/
        migrations/
            __init__.py

您始终可以单独进行迁移,而无需执行上述步骤

python manage.py makemigrations myapp

答案 2 :(得分:1)

现在可以使用。以前没有用,因为我没有对模型进行任何更改。 我是django的新手,正在尝试从观看的视频中执行命令。 Django文档告诉您,makemigrations根据对模型所做的更改创建新的迁移。因此,我在models.py和admin.py中进行了更改,并且现在可以正常使用。