I was trying to create migrations within an existing app using the makemigrations command but it outputs \"No changes detected\".
Usually I create new apps using the
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 '
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.
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.
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.
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
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
.