#33953: RenameModel breaking change in 4.1 with ManyToManyField ---------------------------------+------------------------------------ Reporter: Timothy Thomas | Owner: nobody Type: Bug | Status: new Component: Migrations | Version: 4.1 Severity: Release blocker | Resolution: Keywords: RenameModel | Triage Stage: Accepted Has patch: 0 | Needs documentation: 0 Needs tests: 0 | Patch needs improvement: 0 Easy pickings: 0 | UI/UX: 0 ---------------------------------+------------------------------------ Changes (by Carlton Gibson):
* type: Uncategorized => Bug * severity: Normal => Release blocker * stage: Unreviewed => Accepted Comment: This was changed in afeafd6036616bac8263d762c1610f22241c0187 for #33201, which made RenameModel a no-op where the `db_table` is specified and unchanged. Something looks amiss though. With the models you provide, creating migrations for `Article` and then the renamed `OtherArticle`, I see the following in the shell: {{{ >>> from app.models import Publication, OtherArticle >>> p = Publication.objects.create(title="Testing") >>> a = OtherArticle.objects.create(headline="Will this work?") >>> a.publications.add(p) Traceback (most recent call last): File "/Users/carlton/Projects/Django/django/django/db/backends/utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "/Users/carlton/Projects/Django/django/django/db/backends/sqlite3/base.py", line 369, in execute return Database.Cursor.execute(self, query, params) sqlite3.OperationalError: table article_publications has no column named otherarticle_id The above exception was the direct cause of the following exception: Traceback (most recent call last): File "<console>", line 1, in <module> File "/Users/carlton/Projects/Django/django/django/db/models/fields/related_descriptors.py", line 1114, in add self._add_items( ...[snip]... File "/Users/carlton/Projects/Django/django/django/db/backends/utils.py", line 89, in _execute return self.cursor.execute(sql, params) File "/Users/carlton/Projects/Django/django/django/db/backends/sqlite3/base.py", line 369, in execute return Database.Cursor.execute(self, query, params) django.db.utils.OperationalError: table article_publications has no column named otherarticle_id >>> ^D }}} Relevant DB schema: {{{ sqlite> .tables app_publication auth_user_groups article auth_user_user_permissions article_publications django_admin_log auth_group django_content_type auth_group_permissions django_migrations auth_permission django_session auth_user sqlite> .schema article CREATE TABLE IF NOT EXISTS "article" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "headline" varchar(100) NOT NULL); sqlite> .schema article_publications CREATE TABLE IF NOT EXISTS "article_publications" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "article_id" bigint NOT NULL REFERENCES "article" ("id") DEFERRABLE INITIALLY DEFERRED, "publication_id" bigint NOT NULL REFERENCES "app_publication" ("id") DEFERRABLE INITIALLY DEFERRED); CREATE UNIQUE INDEX "article_publications_article_id_publication_id_8dd463d8_uniq" ON "article_publications" ("article_id", "publication_id"); CREATE INDEX "article_publications_article_id_f32c80b0" ON "article_publications" ("article_id"); CREATE INDEX "article_publications_publication_id_7425f904" ON "article_publications" ("publication_id"); }}} -- Ticket URL: <https://code.djangoproject.com/ticket/33953#comment:1> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/01070182ced7bef2-4a04933c-075c-42b9-92a8-fa1e47f5a0d5-000000%40eu-central-1.amazonses.com.