Django makemigrations未检测到project / apps / myapp

dan*_*bal 5 django django-models django-migrations

解决了

有趣的问题:

  • ./manage.py makemigrations apps.myapp ->“找不到应用程序'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
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)

Settings.py

INSTALLED_APPS = [
    # ...
    'apps.myapp',
    'apps.myapp2',
    'apps.myapp3',
]
Run Code Online (Sandbox Code Playgroud)

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.
Run Code Online (Sandbox Code Playgroud)

“将我们的应用放入应用文件夹中”的做法是否不再有效,我做错了还是makemigrations命令的错误?

注意1:在运行之前makemigrations,我删除了myapp的“ migrations”文件夹,但我确定这没关系。当应用程序位于项目根目录中时,确实会重新创建它。

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

Shi*_*eph 16

您可能已经删除了迁移内部应用程序或文件夹__init__.py里面<app>/migrations/的文件夹,创建一个新的

myproject/
apps/
    myapp/
        migrations/
            __init__.py
Run Code Online (Sandbox Code Playgroud)

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

python manage.py makemigrations myapp
Run Code Online (Sandbox Code Playgroud)


don*_*yor 7

尝试

INSTALLED_APPS = [
    # ...
    'myproject.apps.myapp',
]
Run Code Online (Sandbox Code Playgroud)

python manage.py makemigrations myapp 
Run Code Online (Sandbox Code Playgroud)

  • 尝试过:“导入错误:没有名为“myproject.apps”的模块” (2认同)