Django - makemigrations - No changes detected
There are multiple possible reasons for django not detecting what to migrate during the makemigrations
command.
- migration folder You need a migrations package in your app.
- INSTALLED_APPS You need your app to be specified in the
INSTALLED_APPS
.dict - Verbosity start by running
makemigrations -v 3
for verbosity. This might shed some light on the problem. - Full path In
INSTALLED_APPS
it is recommended to specify the full module app config path 'apply.apps.MyAppConfig' - --settings you might want to make sure the correct settings file is set:
manage.py makemigrations --settings mysite.settings
- specify app name explicitly put the app name in
manage.py makemigrations myapp
- that narrows down the migrations for the app alone and helps you isolate the problem. model meta check you have the right
app_label
in your model metaDebug django debug django core script. makemigrations command is pretty much straight forward. Here's how to do it in pycharm. change your script definition accordingly (ex:
makemigrations --traceback myapp
)
Multiple databases:
- Db Router when working with django db router, the router class (your custom router class) needs to implement the
allow_syncdb
method.
makemigrations always creates migrations for model changes, but if allow_migrate() returns False,
To create initial migrations for an app, run makemigrations
and specify the app name. The migrations folder will be created.
./manage.py makemigrations <myapp>
Your app must be included in INSTALLED_APPS
first (inside settings.py).
My problem (and so solution) was yet different from those described above.
I wasn't using models.py
file, but created a models
directory and created the my_model.py
file there, where I put my model. Django couldn't find my model so it wrote that there are no migrations to apply.
My solution was: in the my_app/models/__init__.py
file I added this line:
from .my_model import MyModel