Django:错误:未知命令:'makemigrations'

28

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

Unknown command: 'makemigrations'

这是教程链接,我成功完成了所有之前的步骤,但现在不确定哪里出了问题或如何修复。 附言:我已经将"polls"包含在了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

8个回答

26

迁移首次出现在版本1.7中,该版本于2014年9月2日正式发布。您需要确保您的教程与您正在使用的Django版本匹配。例如,此版本的教程涵盖了1.9:

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

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


同时,django.get_version() 给出了 1.6。那么迁移不是已经包含在这个版本中了吗? - Mona Jalal
2
不,迁移不包含在1.6中。您会注意到1.6教程没有提到它们。至于South,那不是South的正确命令。我建议在尝试South之前先完成Django教程,但如果您确实想从一开始就包括它,您需要检查其文档,例如http://south.readthedocs.org/en/latest/tutorial/part1.html#the-first-migration。 - Peter DeGlopper
3
哇,Django基础中的迁移,感觉自己有点老了 :) 看来值得查看更新日志,了解我错过了什么。 - alko

3

查看您正在运行的 Django 版本 (感谢 @BradyEmerso):

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

如果版本低于1.8:
pip install --upgrade django

2

我使用的是1.9版本,仍然遇到了这个错误。在我的情况下,未应用迁移是根本原因。我运行'python manage.py migrate'来应用它们,这对我有用。


2

Django makemigration 是在1.7版本后添加的,如果您使用较旧版本的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


1

在执行之前,您需要加载虚拟环境。

对于Linux/OSX,请使用以下代码:

source venv/bin/active

以下是Windows的代码。
source venv/Scripts/activate

这与此无关。错误是关于特定的管理命令不可用。如果虚拟环境没有激活,可能会出现 ModuleNotFoundError: No module named 'django' 或类似的错误。 - viam0Zah

0

这对我有用:使用Ubuntu 20.04,Django 3.2

首先,在创建模型并将其添加到设置后,我执行了以下操作:

python manage.py makemigrations

我在这里获得了迁移编号。

之后,我做了以下操作:

python manage.py sqlmigrate [NAME_OF_MODEL] [NUMBER_OF_THE_MIGRATION]

最后:

python manage.py migrate

0

-1

第一次将以下代码添加到 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所问的无关。 - viam0Zah

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接