Create a model with meta options.
{{{#!python
from django.db import models
class Pony(models.Model):
date_created = models.DateTimeField()
class Meta():
ordering = ('-date_created',)
}}}
Make migrations.
{{{#!python
$ python3 manage.py makemigrations
Migrations for 'infinite':
0001_initial.py:
- Create model Pony
}}}
Remove the meta options from the model.
{{{#!python
from django.db import models
class Pony(models.Model):
date_created = models.DateTimeField()
}}}
Make migrations.
{{{#!python
$ python3 manage.py makemigrations
Migrations for 'infinite':
0002_auto_20140728_1440.py:
- Change Meta options on pony
$ python3 manage.py makemigrations
Migrations for 'infinite':
0003_auto_20140728_1440.py:
- Change Meta options on pony
$ python3 manage.py makemigrations
Migrations for 'infinite':
0004_auto_20140728_1440.py:
- Change Meta options on pony
}}}
I first encountered this issue when upgrading from Django 1.7b4 to 1.7c1.
I do not know what exactly is causing this, but it happens in more cases
than just when removing the meta options. In my project I have many
migrations scripts for several different models. Two of the models ended
up suffering from this issue after upgrading to Django 1.7c1. The issue is
still present in Django 1.7c2. Squashing the migrations does not help.
However, removing the migrations and starting anew solves the issue.
Below is an example of a squashed migration which suffers from this issue.
{{{#!python
from django.db import models, migrations
class Migration(migrations.Migration):
replaces = [('infinite', '0001_initial'), ('infinite',
'0002_auto_20140728_1440')]
dependencies = [
]
operations = [
migrations.CreateModel(
name='Pony',
fields=[
('id', models.AutoField(serialize=False,
auto_created=True, primary_key=True, verbose_name='ID')),
('date_created', models.DateTimeField()),
],
options={
'ordering': ('-date_created',),
},
bases=(models.Model,),
),
migrations.AlterModelOptions(
name='pony',
options={},
),
]
}}}
Starting from scratch solves the issue.
{{{#!python
from django.db import models, migrations
class Migration(migrations.Migration):
dependencies = [
]
operations = [
migrations.CreateModel(
name='Pony',
fields=[
('id', models.AutoField(primary_key=True, serialize=False,
auto_created=True, verbose_name='ID')),
('date_created', models.DateTimeField()),
],
options={
},
bases=(models.Model,),
),
]
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23121>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* stage: Unreviewed => Accepted
* severity: Normal => Release blocker
* needs_tests: => 0
* needs_docs: => 0
Comment:
I can reproduce.
--
Ticket URL: <https://code.djangoproject.com/ticket/23121#comment:1>
* status: new => closed
* resolution: => fixed
Comment:
In [changeset:"d6e73a876d77e889efe839345d39690a7004e2f4"]:
{{{
#!CommitTicketReference repository=""
revision="d6e73a876d77e889efe839345d39690a7004e2f4"
Fixed #23121: AlterModelOptions operation not changing state right
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23121#comment:2>
Comment (by Andrew Godwin <andrew@…>):
In [changeset:"394053ce605a30c742d6270a80986b255adb3a30"]:
{{{
#!CommitTicketReference repository=""
revision="394053ce605a30c742d6270a80986b255adb3a30"
[1.7.x] Fixed #23121: AlterModelOptions operation not changing state right
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23121#comment:3>
Comment (by JockeTF):
Thank you! I can confirm that this solves the issue.
--
Ticket URL: <https://code.djangoproject.com/ticket/23121#comment:4>
* Attachment "migrations_bug.tar.gz" added.
test project
* status: closed => new
* resolution: fixed =>
Comment:
The same bug in version 2.1. Test project in attachment.
Migrations log:
{{{
$ python manage.py makemigrations app
Migrations for 'app':
app/migrations/0001_initial.py
- Create model TestEntity
$ python manage.py makemigrations app
Migrations for 'app':
app/migrations/0002_auto_20180907_1712.py
- Change Meta options on testentity
$ python manage.py makemigrations app
Migrations for 'app':
app/migrations/0003_auto_20180907_1713.py
- Change Meta options on testentity
$ python manage.py makemigrations app
Migrations for 'app':
app/migrations/0004_auto_20180907_1713.py
- Change Meta options on testentity
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23121#comment:5>
* Attachment "migrations_bug.tar.gz" added.
test project
--
* status: new => closed
* resolution: => fixed
Comment:
Please open a new ticket instead of re-opening this closed one.
The issue you're encountering is due to a bug in a new feature in 2.0 that
allowed expressions to be used in `Model.Meta.ordering` (#26257) and has
little to do with this Django 1.7 era bug.
--
Ticket URL: <https://code.djangoproject.com/ticket/23121#comment:6>