﻿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
31255	Migrations create a redundant RemoveField operation when deleting 2 models with related fields.	Panagis Alisandratos		"{{{
class ModelA(models.Model):
    field1 = models.BooleanField(default=False)

class ModelB(models.Model):
    another_field1 = models.TextField(blank=True)
    field1 = models.BooleanField(default=False)
    related_field = models.ForeignKey(ModelA, on_delete=models.CASCADE)

class ModelC(models.Model):
    another_field1 = models.TextField(blank=True)
    related_field = models.ForeignKey(ModelA, on_delete=models.CASCADE)
}}}

Removing {{{ModelB}}} and {{{ModelC}}} yields the following migration:
{{{
class Migration(migrations.Migration):

    dependencies = [
        ('analyzer', '0149_modela_modelb_modelc'),
    ]

    operations = [
        migrations.RemoveField(
            model_name='modelc',
            name='related_field',
        ),
        migrations.DeleteModel(
            name='ModelB',
        ),
        migrations.DeleteModel(
            name='ModelC',
        ),
    ]
}}}

It is unclear whether the {{{RemoveField}}} operation is redundant or if a {{{RemoveField}}} operation for {{{ModelB}}} is missing.

I've confirmed that the {{{RemoveField}}} operation for {{{ModelB}}} is part of the unoptimized operations set."	Cleanup/optimization	new	Migrations	dev	Normal		migration,optimizer	Markus Holtermann Andriy Sokolovskiy Shai Berger Ülgen Sarıkavak	Accepted	0	0	0	0	0	0
