Django 1.7 - makemigrations not detecting changes Django 1.7 - makemigrations not detecting changes python python

Django 1.7 - makemigrations not detecting changes


If you're changing over from an existing app you made in django 1.6, then you need to do one pre-step (as I found out) listed in the documentation:

python manage.py makemigrations your_app_label

The documentation does not make it obvious that you need to add the app label to the command, as the first thing it tells you to do is python manage.py makemigrations which will fail. The initial migration is done when you create your app in version 1.7, but if you came from 1.6 it wouldn't have been carried out. See the 'Adding migration to apps' in the documentation for more details.


This may happen due to the following reasons:

  1. You did not add the app in INSTALLED_APPS list in settings.py(You have to add either the app name or the dotted path to the subclass of AppConfig in apps.py in the app folder, depending on the version of django you are using). Refer documentation: INSTALLED_APPS
  2. You don't have migrations folder inside those apps. (Solution: just create that folder).
  3. You don't have __init__.py file inside migrations folder of those apps. (Solution: Just create an empty file with name __init__.py)
  4. You don't have an __init__.py file inside the app folder. (Solution: Just create an empty file with name __init__.py)
  5. You don't have a models.py file in the app
  6. Your Python class (supposed to be a model) in models.py doesn't inherit django.db.models.Model
  7. You have some semantic mistake in definition of models in models.py

Note:A common mistake is to add migrations folder in .gitignore file. When cloned from remote repo, migrations folder and/or __init__.py files will be missing in local repo. This causes problem.

I suggest to gitignore migration files by adding the following lines to .gitignore file

*/migrations/*!*/migrations/__init__.py


Ok, looks like I missed an obvious step, but posting this in case anyone else does the same.

When upgrading to 1.7, my models became unmanaged (managed = False) - I had them as True before but seems it got reverted.

Removing that line (To default to True) and then running makemigrations immediately made a migration module and now it's working. makemigrations will not work on unmanaged tables (Which is obvious in hindsight)