【问题标题】:Django: Error: Unknown command: 'makemigrations'Django:错误:未知命令:'makemigrations'
【发布时间】:2013-12-13 13:07:15
【问题描述】:

我正在尝试遵循Django 教程,当我输入python manage.py makemigrations polls 时遇到以下错误

Unknown command: 'makemigrations'

这是教程的link,我成功完成了前面的所有步骤,但我不确定现在出了什么问题或如何解决它。 P.S.:我已经在 INSTALLED_APPS 中包含了“民意调查”!

INSTALLED_APPS = (
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'polls',
    'South',
)

答案:我不得不将 INSTALLED_APPS 修改为:

INSTALLED_APPS = (
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'polls',
    )

并且还使用了这个命令:python manage.py syncdb

【问题讨论】:

    标签: python django migration


    【解决方案1】:

    你需要在做之前加载虚拟环境。

    在 Linux/OSX 上使用以下代码:

    source venv/bin/active
    

    以下代码适用于 Windows

    source venv/Scripts/activate
    

    【讨论】:

    • 这完全不相关。该错误与特定的管理命令不可用有关。如果 virtualenv 没有激活,它可能会给出ModuleNotFoundError: No module named 'django' 或类似的值。
    【解决方案2】:

    我第一次将以下代码添加到 project_name\settings.py 文件中。

                      `INSTALLED_APPS = [
            'django.contrib.admin',
            'django.contrib.auth',
            'django.contrib.contenttypes',
            'django.contrib.sessions',
            'django.contrib.messages',
            'django.contrib.staticfiles',
            #Django REST Framework
            'rest_framework',
            #Games application
            'games.apps.GamesConfig',
                      ]`
    

    保存后,运行以下代码时出现错误。

                     `python manage.py makemigrations games`
    

    然后我检查了 settings.py 文件,我意识到有两个 INSTALLED_APPS 而第二个没有关注。当我添加这些代码时,代码就起作用了。

           `#Django REST Framework
           'rest_framework',
            #Games application
           'games.apps.GamesConfig',`
    

    【讨论】:

    • 这与 OP 询问的内容无关。
    【解决方案3】:

    我做了以下(对于 python 版本 3.6.4)来解决这个问题:

    1. 安装virtualenv
    2. Activate virtualenv

    干杯

    【讨论】:

      【解决方案4】:

      在 1.7 之后添加的 django makemigration 中,因此如果您使用的是旧版本的 Django,那么您必须更改 settings.py 并将您的应用程序添加到已安装的应用程序中,例如

      INSTALLED_APPS = (
          'Demo',
          'django.contrib.admin',
          'django.contrib.auth',
          'django.contrib.contenttypes',
          'django.contrib.sessions',
          'django.contrib.messages',
          'django.contrib.staticfiles',
      )
      

      然后你就可以运行命令了

      python manage.py syncdb

      【讨论】:

        【解决方案5】:

        Migrations 最初是在 2014 年 9 月 2 日正式发布的 1.7 版中添加的。您需要确保您的教程与您正在使用的 Django 版本相匹配。例如,这个版本的教程涵盖了 1.9:

        https://docs.djangoproject.com/en/1.9/intro/tutorial01/

        或者,如果您使用的是旧版本的 Django,您可以将该 URL 中的“1.9”更改为您使用的任何版本(回到 1.3)。或者使用文档页面上的下拉菜单选择版本并搜索“教程”。

        【讨论】:

        • 还有django.get_version() 给我1.6。那么这个版本中不包括迁移吗?
        • 不,迁移不包含在 1.6 中。您会注意到 1.6 教程没有提及它们。至于南,这不是南的正确命令。我建议在处理 South 之前完成 Django 教程,但如果你确实想从一开始就包含它,你需要检查它的文档,例如 south.readthedocs.org/en/latest/tutorial/…
        • 哇,在 base django 中迁移,感觉自己有点老了 :) 似乎值得检查一下更新日志,看看我还有什么遗漏的。
        【解决方案6】:

        我使用的是 1.9 版,但仍然出现此错误。我有未应用的迁移,这就是我的根本原因。我运行“python manage.py migrate”来应用它们,它对我有用。

        【讨论】:

          【解决方案7】:

          找出您正在运行的 django 版本 (thanks @BradyEmerson):

          python -c "import django; print(django.get_version())"
          

          如果早于 1.8:

          pip install --upgrade django
          

          【讨论】:

            猜你喜欢
            • 2017-01-13
            • 1970-01-01
            • 1970-01-01
            • 2011-05-04
            • 2016-08-18
            • 1970-01-01
            • 1970-01-01
            • 2011-05-12
            • 2012-04-24
            相关资源
            最近更新 更多