From bf4dc5733fec86e7dfcdeddbcf4ce047c0b2f922 Mon Sep 17 00:00:00 2001 From: Markus Holtermann Date: Thu, 30 Apr 2015 01:39:50 +0200 Subject: [1.8.x] Fixed #24725 -- Allowed renaming of target models in ManyToMany relations This is a regression caused by introducing rendered migration states in 1aa3e09c2043 and the _meta refactoring in fb48eb05816b. Thanks to Danilo Bargen for reporting the issue and Marten Kenbeek and Tim Graham for triaging the bug and providing the initial test case. Backport of 63f9b633f9cb620a4c4764b47dca127706a8d7b4 from master --- tests/migrations/test_operations.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'tests/migrations') diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py index 7ff798f690..16d297afad 100644 --- a/tests/migrations/test_operations.py +++ b/tests/migrations/test_operations.py @@ -614,6 +614,32 @@ class OperationTests(OperationTestBase): self.assertEqual(Rider.objects.count(), 2) self.assertEqual(Pony._meta.get_field('riders').rel.through.objects.count(), 2) + def test_rename_m2m_target_model(self): + app_label = "test_rename_m2m_target_model" + project_state = self.apply_operations(app_label, ProjectState(), operations=[ + migrations.CreateModel("Rider", fields=[]), + migrations.CreateModel("Pony", fields=[ + ("riders", models.ManyToManyField("Rider")), + ]), + ]) + Pony = project_state.apps.get_model(app_label, "Pony") + Rider = project_state.apps.get_model(app_label, "Rider") + pony = Pony.objects.create() + rider = Rider.objects.create() + pony.riders.add(rider) + + project_state = self.apply_operations(app_label, project_state, operations=[ + migrations.RenameModel("Rider", "Rider2"), + ]) + Pony = project_state.apps.get_model(app_label, "Pony") + Rider = project_state.apps.get_model(app_label, "Rider2") + pony = Pony.objects.create() + rider = Rider.objects.create() + pony.riders.add(rider) + self.assertEqual(Pony.objects.count(), 2) + self.assertEqual(Rider.objects.count(), 2) + self.assertEqual(Pony._meta.get_field('riders').rel.through.objects.count(), 2) + def test_add_field(self): """ Tests the AddField operation. -- cgit v1.3