28

I am trying to follow the Django tutorial and I faced the following error when I enter python manage.py makemigrations polls

Unknown command: 'makemigrations'

Here's the link to the tutorial and I accomplished all the previous steps successfully and I am not sure what's going wrong now or how to fix it. P.S.: I have already included "polls" in the INSTALLED_APPS!

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

Answer: I had to modify INSTALLED_APPS to :

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

and also used this command: python manage.py syncdb

Mona Jalal
  • 34,860
  • 64
  • 239
  • 408

8 Answers8

26

Migrations were first added in version 1.7, officially released on September 2, 2014. You need to make sure your tutorial matches the version of Django you're working with. For instance, this version of the tutorial covers 1.9:

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

Or, if you're using an older version of Django, you can change the "1.9" in that URL to whatever version you're on (back to 1.3). Or use the dropdown on the docs page to pick the version and search for "tutorial".

Rohan Khude
  • 4,455
  • 5
  • 49
  • 47
Peter DeGlopper
  • 36,326
  • 7
  • 90
  • 83
  • Also `django.get_version()` gives me `1.6`. So aren't migration included in this version? – Mona Jalal Nov 27 '13 at 18:25
  • 2
    No, migrations are not included in 1.6. You'll notice that the 1.6 tutorial doesn't refer to them. As for South, that's not the right command for South. I would recommend working through the Django tutorial before tackling South, but if you do want to include it from the beginning you'll need to check its documentation, eg http://south.readthedocs.org/en/latest/tutorial/part1.html#the-first-migration – Peter DeGlopper Nov 27 '13 at 18:26
  • 3
    Wow, migratuions in base django, feel myself a bit aged :) It seems worth to check changelog for what else I missed. – alko Nov 27 '13 at 18:42
3

Find out what version of django you're running (thanks @BradyEmerson):

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

If older than 1.8:

pip install --upgrade django
Community
  • 1
  • 1
Bob Stein
  • 16,271
  • 10
  • 88
  • 101
2

I was using version 1.9 and still getting this error. I had unapplied migrations and that was the root cause in my case. I ran 'python manage.py migrate' to apply them and it worked for me.

2

In django makemigration added after 1.7 so if you are using older version of Django then you have to change settings.py and add your application in installed app like

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

and then you can run command

python manage.py syncdb

bhatt ravii
  • 382
  • 3
  • 12
1

You need to load the virtual environment before doing it.

Use below code for Linux/OSX:

source venv/bin/active

And the following code for Windows

source venv/Scripts/activate
kano
  • 5,626
  • 3
  • 33
  • 48
user3704354
  • 119
  • 2
  • 5
  • This is quite unrelated. The error is about a specific management command not being available. If the virtualenv wasn't active, probably it would give a `ModuleNotFoundError: No module named 'django'` or similar. – viam0Zah Jul 02 '20 at 10:53
0

I did following (for python version 3.6.4) to get this issue resolved:

  1. install virtualenv
  2. Activate virtualenv

Cheers

Akshay Lokur
  • 6,680
  • 13
  • 43
  • 62
0

This worked for me: using ubuntu 20.04, Django 3.2

First after creating the model and addind to the setting, I did:

python manage.py makemigrations

I obtained the migration number here.

After that I did:

python manage.py sqlmigrate [NAME_OF_MODEL] [NUMBER_OF_THE_MIGRATION]

Finally:

python manage.py migrate
Donald ABEL
  • 15
  • 1
  • 5
-1

First time I add following piece of code into project_name\settings.py file.

                  `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',
                  ]`

After save it, when run following code I got error.

                 `python manage.py makemigrations games`

Then I check the settings.py file I realize that there are two INSTALLED_APPS and second one has not followings. When I added these the code worked.

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