﻿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
33953	RenameModel breaking change in 4.1 with ManyToManyField	Timothy Thomas	Iuri de Silvio	"Steps:
1) Create model with a ManyToManyField and a db_table in the Meta.
2) Rename model and keep db_table the same as before

The generated db schema generated from generating migrations would change the columns on the ManyToMany relationship table to match the model name. This matched the generated sql for interacting with this model as well.

It is possible the db_table not changing is not required.

Example:
{{{
class Publication(models.Model):
    title = models.CharField(max_length=30)

class Article(models.Model):
    class Meta:
        db_table = ""article""

    headline = models.CharField(max_length=100)
    publications = models.ManyToManyField(Publication)
}}}

Changed to:
{{{
class OtherArticle(models.Model):
    class Meta:
        db_table = ""article""

    headline = models.CharField(max_length=100)
    publications = models.ManyToManyField(Publication)
}}}

with the corresponding migration:
{{{
    operations = [
        migrations.RenameModel(
            old_name=""Article"",
            new_name=""OtherArticle"",
        ),
    ]
}}}


Previous behavior (4.0.6):
The corresponding (functional) SQL gets generated:
{{{
'SELECT COUNT(*) AS ""__count"" FROM ""publication"" INNER JOIN ""article_publications"" ON (""article"".""id"" = ""article_publications"".""publication_id"") WHERE ""article_publications"".""otherarticle_id"" = %s'
}}}

Current behavior (4.1):
**The same SQL gets generated but fails**. The schema that is now generated from running the same set of migrations on a fresh db would require:
{{{
'SELECT COUNT(*) AS ""__count"" FROM ""publication"" INNER JOIN ""article_publications"" ON (""article"".""id"" = ""article_publications"".""publication_id"") WHERE ""article_publications"".""article_id"" = %s'
}}}
as the column now matches the old model name. However, running that SQL would fail against our existing DB as it has ended up in a state that does not match the behavior of the existing migrations in the current version.
"	Bug	closed	Migrations	4.1	Release blocker	fixed	RenameModel	Iuri de Silvio	Ready for checkin	1	0	0	0	0	0
