django 1.7 migrations: changes detected while nothing has changed ?

61 views
Skip to first unread message

Michael

unread,
Oct 22, 2014, 12:11:39 PM10/22/14
to django...@googlegroups.com
Hi,

Does anybody know how are changes detected by the ```makemigrations``` command in django 1.7?
It seems that I have a bug. The original post is on stackoverflow but no one has replied so I am trying here.


I have the issue that it always tells me there are changes for one of my field whereas there are not. When I run the command, it just writes the same migration file over and over with no changes.

The field is a custom field on which I implemented the deconstruct method and have some parameters that are objects so I used the deconstructible decorator.

I created a project on github that replicates the issue: https://github.com/YAmikep/django-testmigrations

What did I do wrong? Is this a bug?


Here is what I ran:

    /projects/testmigrations$ python manage.py makemigrations app1
    Migrations for 'app1':
      0001_initial.py:
        - Create model ModelA
    /projects/testmigrations$ python manage.py migrate
    Operations to perform:
      Apply all migrations: admin, contenttypes, auth, app1, sessions
    Running migrations:
      Applying contenttypes.0001_initial... OK
      Applying auth.0001_initial... OK
      Applying admin.0001_initial... OK
      Applying app1.0001_initial... OK
      Applying sessions.0001_initial... OK
    /projects/testmigrations$ python manage.py makemigrations
    Migrations for 'app1':
      0002_auto_20141014_2123.py:
        - Alter field field1 on modela
    /projects/testmigrations$ python manage.py makemigrations
    Migrations for 'app1':
      0003_auto_20141014_2123.py:
        - Alter field field1 on modela


The migration files 0002_auto_20141014_2123.py and 0003_auto_20141014_2123.py contain the exact same operations:

    operations = [
        migrations.AlterField(
            model_name='modela',
            name='field1',
            field=app1.models.CustomField(max_length=50, value_manager=app1.models.ValueManager(values=[app1.models.Value(val=1), app1.models.Value(val=2)])),
        ),
    ]


Thanks
Mike

Markus Holtermann

unread,
Oct 22, 2014, 12:20:43 PM10/22/14
to django...@googlegroups.com
Hey Michael,

The problem seems to be the same as in #23473 https://code.djangoproject.com/ticket/23473 . Try adding a __eq__ method on the classes marked as deconstructible.

/Markus
--
Sent from my Android device with K-9 Mail. Please excuse my brevity.

Michael

unread,
Oct 22, 2014, 2:00:23 PM10/22/14
to django...@googlegroups.com
Thanks, that fixed it.
Reply all
Reply to author
Forward
0 new messages