532👍
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).
105👍
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
- [Django]-Authenticate by IP address in Django
- [Django]-Django – {% csrf_token %} was used in a template, but the context did not provide the value
- [Django]-FileUploadParser doesn't get the file name
91👍
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 meta -
Debug 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,
- [Django]-How to format time in django-rest-framework's serializer?
- [Django]-Django: using more than one database with inspectdb?
- [Django]-With DEBUG=False, how can I log django exceptions to a log file
36👍
I’ve read many answers to this question often stating to simply run makemigrations
in some other ways. But to me, the problem was in the Meta
subclass of models.
I have an app config that says label = <app name>
(in the apps.py
file, beside models.py
, views.py
etc). If by any chance your meta class doesn’t have the same label as the app label (for instance because you are splitting one too big app into multiple ones), no changes are detected (and no helpful error message whatsoever). So in my model class I have now:
class ModelClassName(models.Model):
class Meta:
app_label = '<app name>' # <-- this label was wrong before.
field_name = models.FloatField()
...
Running Django 1.10 here.
- [Django]-Django – limiting query results
- [Django]-How do I run tests against a Django data migration?
- [Django]-Whats the difference between using {{STATIC_URL}} and {% static %}
27👍
Another thing that will cause this is a trailing comma after the field which will cause the field to skipped during makemigrations:
class MyModel(models.Model):
name = models.CharField(max_length=64, null=True) # works
language_code = models.CharField(max_length=2, default='en') # works
is_dumb = models.BooleanField(default=False), # doesn't work
I had a trailing ,
in one line perhaps from copy&paste. The line with is_dumb
doesn’t create a model migration with ./manage.py makemigrations
because Python thinks it is a tuple, and Django doesn’t consider it a field.
- [Django]-How do you Serialize the User model in Django Rest Framework
- [Django]-Python Asyncio in Django View
- [Django]-Django TypeError: get() got multiple values for keyword argument 'invoice_id'
22👍
update: One should make sure that an __init__.py
file exists in the migrations
folder before trying:
./manage.py makemigrations <myapp1> <myapp2> ... <myappN>
There are sometimes when ./manage.py makemigrations
is superior to ./manage.py makemigrations <myapp>
because it can handle certain conflicts between apps.
Those occasions occur silently and it takes several hours of swearing
to understand the real meaning of the dreaded No changes detected
message.
Therefore, it is a far better choice to make use of the following command:
./manage.py makemigrations <myapp1> <myapp2> ... <myappN>
- [Django]-What's the difference between select_related and prefetch_related in Django ORM?
- [Django]-Django storages aws s3 delete file from model record
- [Django]-Django Rest Framework custom response message
20👍
It is a comment but should probably be an answer.
Make sure that your app name is in settings.py INSTALLED_APPS
otherwise no matter what you do it will not run the migrations.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'blog',
]
Then run:
./manage.py makemigrations blog
- [Django]-Add inline model to django admin site
- [Django]-With DEBUG=False, how can I log django exceptions to a log file
- [Django]-Validators = [MinValueValidator] does not work in Django
13👍
Method : 1
Step : 1
Make sure your app must be included in INSTALLED_APPS
in settings.py
Stpe : 2
python manage.py makemigrations <appname>
if same message shows (No changes detected)
!Warning This is Very Risky For Your Project So Make Sure You Have Backup For Your Project Before Applying The Method 2.
Method 2
rename your app name and make new app using :
django-admin startapp <appname>
copy all .py
files except
from the old app
- migration folder
- pycache folder
- init.py
- test.py file if you didn’t wrote code in it
and paste into the new app which you made recently
remember you have to make exact the same name for new app otherwise you have to make more changes in the project.
- [Django]-A field with precision 10, scale 2 must round to an absolute value less than 10^8
- [Django]-Django Generic Views using decorator login_required
- [Django]-Detect mobile, tablet or Desktop on Django
11👍
I had copied a table in from outside of django and the Meta class defaulted to "managed = false". For example:
class Rssemailsubscription(models.Model):
id = models.CharField(primary_key=True, max_length=36)
...
area = models.FloatField('Area (Sq. KM)', null=True)
class Meta:
managed = False
db_table = 'RSSEmailSubscription'
By changing managed
to True
, makemigrations
started picking up changes.
- [Django]-Django – "Incorrect type. Expected pk value, received str" error
- [Django]-Duplicate column name
- [Django]-How to query Case-insensitive data in Django ORM?
11👍
- Make sure your app is mentioned in installed_apps in settings.py
- Make sure you model class extends models.Model
- [Django]-Django development server reload takes too long
- [Django]-Django datefield filter by weekday/weekend
- [Django]-How to check if a user is logged in (how to properly use user.is_authenticated)?
11👍
My problem was much simpler than the above answers and probably a far more common reason as long as your project is already set up and working. In one of my applications that had been working for a long time, migrations seemed wonky, so in a hurry, I did the following:
rm -r */migrations/*
rm db.sqlite3
python3 manage.py makemigrations
No changes detected
Whaat??
I had mistakenly also removed all the __init__.py
files 🙁 – Everything was working again after I went in and:
touch ads1/migrations/__init__.py
For each of my applications then the makemigrations
worked again.
It turns out that I had manually created a new application by copying another and forgot to put the __init__.py
in the migrations
folder and that confinved me that everything was wonky – leading my making it worse with an rm -r
as described above.
Hope this helps someone from swearing at the “No changes detected” error for a few hours.
- [Django]-Detect mobile, tablet or Desktop on Django
- [Django]-Filter Queryset on empty ImageField
- [Django]-Best way to integrate SqlAlchemy into a Django project
7👍
Another possible reason is if you had some models defined in another file (not in a package) and haven’t referenced that anywhere else.
For me, simply adding from .graph_model import *
to admin.py
(where graph_model.py
was the new file) fixed the problem.
- [Django]-VueJS + Django Channels
- [Django]-Django Rest JWT login using username or email?
- [Django]-Django: Record with max element
5👍
When adding new models to the django api application and running the python manage.py makemigrations
the tool did not detect any new models.
The strange thing was that the old models did got picked by makemigrations
, but this was because they were referenced in the urlpatterns
chain and the tool somehow detected them. So keep an eye on that behavior.
The problem was because the directory structure corresponding to the models package had subpackages and all the __init__.py
files were empty. They must explicitly import all the required classes in each subfolder and in the models __init__.py
for Django to pick them up with the makemigrations
tool.
models
├── __init__.py <--- empty
├── patient
│ ├── __init__.py <--- empty
│ ├── breed.py
│ └── ...
├── timeline
│ ├── __init__.py <-- empty
│ ├── event.py
│ └── ...
- [Django]-Django manage.py runserver invalid syntax
- [Django]-Find object in list that has attribute equal to some value (that meets any condition)
- [Django]-How do I run tests against a Django data migration?
5👍
This might hopefully help someone else, as I ended up spending hours trying to chase this down.
If you have a function within your model by the same name, this will remove the value. Pretty obvious in hindsight, but nonetheless.
So, if you have something like this:
class Foobar(models.Model):
[...]
something = models.BooleanField(default=False)
[...]
def something(self):
return [some logic]
In that case, the function will override the setting above, making it “invisible” to makemigrations
.
- [Django]-Timestamp fields in django
- [Django]-How can I get tox and poetry to work together to support testing multiple versions of a Python dependency?
- [Django]-Strings won't be translated in Django using format function available in Python 2.7
3👍
INSTALLED_APPS = [
'blog.apps.BlogConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
make sure ‘blog.apps.BlogConfig’, (this is included in your settings.py in order to make your app migrations)
then run python3 manage.py makemigrations blog or your app name
- [Django]-Missing Table When Running Django Unittest with Sqlite3
- [Django]-How can I get tox and poetry to work together to support testing multiple versions of a Python dependency?
- [Django]-How do I remove Label text in Django generated form?
3👍
A very dumb issue you can have as well is to define two class Meta
in your model. In that case, any change to the first one won’t be applied when running makemigrations
.
class Product(models.Model):
somefield = models.CharField(max_length=255)
someotherfield = models.CharField(max_length=255)
class Meta:
indexes = [models.Index(fields=["somefield"], name="somefield_idx")]
def somefunc(self):
pass
# Many lines...
class Meta:
indexes = [models.Index(fields=["someotherfield"], name="someotherfield_idx")]
- [Django]-No module named MySQLdb
- [Django]-How can I use the variables from "views.py" in JavasScript, "<script></script>" in a Django template?
- [Django]-Custom django admin templates not working
3👍
In my case i forgot to insert the class arguments
Wrong:
class AccountInformation():
Correct
class AccountInformation(models.Model):
- [Django]-(13: Permission denied) while connecting to upstream:[nginx]
- [Django]-Django-allauth social account connect to existing account on login
- [Django]-AccessDenied when calling the CreateMultipartUpload operation in Django using django-storages and boto3
3👍
I had a different issue while creating a new app called deals
. I wanted to separate the models inside that app so I had 2 model files named deals.py
and dealers.py
.
When running python manage.py makemigrations
I got: No changes detected
.
I went ahead and inside the __init__.py
which lives on the same directory where my model files lived (deals and dealer) I did
from .deals import *
from .dealers import *
And then the makemigrations
command worked.
Turns out that if you are not importing the models anywhere OR your models file name isn’t models.py
then the models wont be detected.
Another issue that happened to me is the way I wrote the app in settings.py
:
I had:
apps.deals
It should’ve been including the root project folder:
cars.apps.deals
- [Django]-Favorite Django Tips & Features?
- [Django]-Problems extend change_form.html in django admin
- [Django]-Numeric for loop in Django templates
2👍
I solved that problem by doing this:
- Erase the “db.sqlite3” file. The issue here is that your current data base will be erased, so you will have to remake it again.
- Inside the migrations folder of your edited app, erase the last updated file. Remember that the first created file is: “0001_initial.py”. For example: I made a new class and register it by the “makemigrations” and “migrate” procedure, now a new file called “0002_auto_etc.py” was created; erase it.
- Go to the “pycache” folder (inside the migrations folder) and erase the file “0002_auto_etc.pyc”.
- Finally, go to the console and use “python manage.py makemigrations” and “python manage.py migrate”.
- [Django]-Parsing unicode input using python json.loads
- [Django]-How to show processing animation / spinner during ajax request?
- [Django]-Laravel's dd() equivalent in django
2👍
I know this is an old question but I fought with this same issue all day and my solution was a simple one.
I had my directory structure something along the lines of…
apps/
app/
__init__.py
app_sub1/
__init__.py
models.py
app_sub2/
__init__.py
models.py
app_sub3/
__init__.py
models.py
app2/
__init__.py
app2_sub1/
__init__.py
models.py
app2_sub2/
__init__.py
models.py
app2_sub3/
__init__.py
models.py
main_app/
__init__.py
models.py
And since all the other models up until the one I had a problem with were being imported somewhere else that ended up importing from main_app
which was registered in the INSTALLED_APPS
, I just got lucky that they all worked.
But since I only added each app
to INSTALLED_APPS
and not the app_sub*
when I finally added a new models file that wasn’t imported ANYWHERE else, Django totally ignored it.
My fix was adding a models.py
file to the base directory of each app
like this…
apps/
app/
__init__.py
models.py <<<<<<<<<<--------------------------
app_sub1/
__init__.py
models.py
app_sub2/
__init__.py
models.py
app_sub3/
__init__.py
models.py
app2/
__init__.py
models.py <<<<<<<<<<--------------------------
app2_sub1/
__init__.py
models.py
app2_sub2/
__init__.py
models.py
app2_sub3/
__init__.py
models.py
main_app/
__init__.py
models.py
and then add from apps.app.app_sub1 import *
and so on to each of the app
level models.py
files.
Bleh… this took me SO long to figure out and I couldn’t find the solution anywhere… I even went to page 2 of the google results.
Hope this helps someone!
- [Django]-Django.contrib.gis.db.backends.postgis vs django.db.backends.postgresql_psycopg2
- [Django]-How to save pillow image object to Django ImageField?
- [Django]-How can I activate the unaccent extension on an already existing model
2👍
I forgot to put correct arguments:
class LineInOffice(models.Model): # here
addressOfOffice = models.CharField("Корхоная жош",max_length= 200) #and here
...
in models.py
and then it started to drop that annoying
No changes detected in app ‘myApp ‘
- [Django]-Django + Ajax
- [Django]-Remove pk field from django serialized objects
- [Django]-How to access request body when using Django Rest Framework and avoid getting RawPostDataException
2👍
This could be done by using two steps that are mentioned below.
- add your app to
settings.py
> INSTALLED_APPS - open admin.py
from .models import upImg
# Register your models here.
admin.site.register(upImg)
NOTE: replace upImg
with your className defined in models.py
after that see if there still any python manage.py makemigrations
are left or not. if there is, than execute python manage.py migrate
too.
For more info follow this django tutorial.
- [Django]-How to resize the new uploaded images using PIL before saving?
- [Django]-Referencing multiple submit buttons in django
- [Django]-How to format time in django-rest-framework's serializer?
2👍
Its easy, you need to add empty init.py in empty migrations folder.
Then check migrations using "python manage.py makemigrations"
Directory structure-
- Your App
- migrations
- init.py
- migrations
- [Django]-How to use refresh token to obtain new access token on django-oauth-toolkit?
- [Django]-How to show processing animation / spinner during ajax request?
- [Django]-How to run a celery worker with Django app scalable by AWS Elastic Beanstalk?
1👍
The solution is you have to include your app in INSTALLED_APPS.
I missed it and I found this same issue.
after specifying my app name migration became successful
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'boards',
]
please note I mentioned boards in last, which is my app name.
- [Django]-How do I get the object if it exists, or None if it does not exist in Django?
- [Django]-How do I use django rest framework to send a file in response?
- [Django]-Django: Record with max element
1👍
One more edge case and solution:
I added a boolean field, and at the same time added an @property referencing it, with the same name (doh). Commented the property and migration sees and adds the new field. Renamed the property and all is good.
- [Django]-Itertools.groupby in a django template
- [Django]-Django: remove a filter condition from a queryset
- [Django]-Django Rest Framework pagination extremely slow count
1👍
Try registering your model in admin.py, here’s an example:-
admin.site.register(YourModelHere)
You can do the following things:-
1. admin.site.register(YourModelHere) # In admin.py
2. Reload the page and try again
3. Hit CTRL-S and save
4. There might be an error, specially check models.py and admin.py
5. Or, at the end of it all just restart the server
- [Django]-Django Generic Views using decorator login_required
- [Django]-Django custom field validator vs. clean
- [Django]-Remove Labels in a Django Crispy Forms
1👍
I had a similar issue with django 3.0, according migrations section in the official documentation, running this was enough to update my table structure:
python manage.py makemigrations
python manage.py migrate
But the output was always the same: ‘no change detected’ about my models after I executed ‘makemigrations’ script.
I had a syntax error on models.py at the model I wanted to update on db:
field_model : models.CharField(max_length=255, ...)
instead of:
field_model = models.CharField(max_length=255, ...)
Solving this stupid mistake, with those command the migration was done without problems. Maybe this helps someone.
- [Django]-Error: No module named staticfiles
- [Django]-Remove pk field from django serialized objects
- [Django]-How to recursively query in django efficiently?
1👍
My problem with this error, was that I had included:
class Meta:
abstract = True
Inside model that I wanted to creation migrate for.
- [Django]-Django datefield filter by weekday/weekend
- [Django]-Http POST drops port in URL
- [Django]-Celery : Execute task after a specific time gap
- [Django]-Django REST Framework: how to substitute null with empty string?
- [Django]-What is pip install -q -e . for in this Travis-CI build tutorial?
- [Django]-Determine variable type within django template
0👍
The possible reason could be deletion of the existing db file and migrations folder
you can use python manage.py makemigrations <app_name>
this should work. I once faced a similar problem.
- [Django]-Django template how to look up a dictionary value with a variable
- [Django]-What is pip install -q -e . for in this Travis-CI build tutorial?
- [Django]-Django models avoid duplicates
0👍
If you have the managed = True
in yout model Meta, you need to remove it and do a migration. Then run the migrations again, it will detect the new updates.
- [Django]-Django F() division – How to avoid rounding off
- [Django]-Creating a JSON response using Django and Python
- [Django]-Error when using django.template
0👍
The Best Thing You can do is, Delete the existing database. In my case, I were using phpMyAdmin SQL database, so I manually delete the created database overthere.
After Deleting:
I create database in PhpMyAdmin, and doesn,t add any tables.
Again run the following Commands:
python manage.py makemigrations
python manage.py migrate
After These Commands: You can see django has automatically created other necessary tables in Database(Approx there are 10 tables).
python manage.py makemigrations <app_name>
python manage.py migrate
And Lastly: After above commands all the model(table) you have created are directly imported to the database.
Hope this will help.
- [Django]-Django – Annotate multiple fields from a Subquery
- [Django]-How to set a value of a variable inside a template code?
- [Django]-How to query Case-insensitive data in Django ORM?
0👍
Another possibility is you squashed some migrations and applied the resulting one, but forgot to remove the replaces
attribute from it.
- [Django]-How do I get user IP address in Django?
- [Django]-Django: guidelines for speeding up template rendering performance
- [Django]-How to loop over form field choices and display associated model instance fields
0👍
I had a property with the same name as the field I have tried to add with makemigrations
.
- [Django]-Django.db.utils.IntegrityError: duplicate key value violates unique constraint "django_migrations_pkey"
- [Django]-Django gunicorn sock file not created by wsgi
- [Django]-Suddenly when running tests I get "TypeError: 'NoneType' object is not iterable
0👍
Despite of many correct answers here, I yet have to add a new one as mine was a whole different thing that resulted in the same issue.
My problem was that in my models file I had my class model defined like:
class JobAd:
and had forgotten to actually do it like this:
class JobAd(models.Model):
Make sure you did not do the same mistake
- [Django]-Add inline model to django admin site
- [Django]-Favorite Django Tips & Features?
- [Django]-Django REST Framework : "This field is required." with required=False and unique_together
0👍
Are you sure, you did not forget to inherit your class from models.Model?
-> it should be like this
MyModelClass(models.Model):
... rest of the code
- [Django]-How do I make many-to-many field optional in Django?
- [Django]-How can I create a deep clone of a DB object in Django?
- [Django]-Error when using django.template
- [Django]-Django create userprofile if does not exist
- [Django]-Can "list_display" in a Django ModelAdmin display attributes of ForeignKey fields?
- [Django]-'pip' is not recognized as an internal or external command
0👍
I thought I would share my case as well. My app name and level are different in app.py file. Once I start using level, it worked.
python3 manage.py makemigrations {app_level}
- [Django]-Why does DEBUG=False setting make my django Static Files Access fail?
- [Django]-Django template how to look up a dictionary value with a variable
- [Django]-Django models: Only permit one entry in a model?
-1👍
First of all, make sure your app is registered in the Installed_app in the setting.py
Then the above answer works perfectly fine
- [Django]-VueJS + Django Channels
- [Django]-Django Footer and header on each page with {% extends }
- [Django]-Is there a way to loop over two lists simultaneously in django?
-1👍
Well, I’m sure that you didn’t set the models yet, so what dose it migrate now ??
So the solution is setting all variables and set Charfield, Textfield……. and migrate them and it will work.
- [Django]-What's the idiomatic Python equivalent to Django's 'regroup' template tag?
- [Django]-How do I get user IP address in Django?
- [Django]-Django rest framework: query parameters in detail_route