﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
28916	Changing the type of a ForeignKey and changing unique_together creates migrations in the wrong order, causing migrations to fail	fredley		"models.py before:


{{{
class MyModel(models.Model):
    fka = models.ForeignKey(SomethingA, ...)
    date = models.DateField()

    class Meta:
        unique_together = ('fka', 'date')
}}}


models.py after:


{{{
class MyModel(models.Model):
    fkb = models.ForeignKey(SomethingB, ...)
    date = models.DateField()

    class Meta:
        unique_together = ('fkb', 'date')
}}}

This can result in an automatically created migration (using `manage.py makemigrations`) that looks like this:

{{{
operations = [
    migrations.AddField(
        model_name='mymodel',
        name='fkb',
        field=models.ForeignKey(... to='myapp.somethingb'),
    ),
    migrations.RemoveField(
        model_name='mymodel',
        name='fka',
    ),
    migrations.AlterUniqueTogether(
        name='mymodel',
        unique_together={('fkb', 'date')},
    ),
]
}}}

This migration fails, because `AlterUniqueTogether` needs to come before `RemoveField`, as it references `fka`. This is hard to debug, and can only be fixed by manually reordering the migration operations."	Bug	closed	Migrations	2.0	Normal	duplicate	migrations		Unreviewed	0	0	0	0	0	0
