mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	[4.1.x] Fixed #33953 -- Reverted "Fixed #33201 -- Made RenameModel operation a noop for models with db_table."
Regression inafeafd6036. This revertsafeafd6036. Thanks Timothy Thomas for the report. Backport of166a3b3263from main
This commit is contained in:
		
				
					committed by
					
						 Mariusz Felisiak
						Mariusz Felisiak
					
				
			
			
				
	
			
			
			
						parent
						
							c9ebd5b7aa
						
					
				
				
					commit
					7d5ccbbe1a
				
			| @@ -371,13 +371,12 @@ class RenameModel(ModelOperation): | ||||
|         new_model = to_state.apps.get_model(app_label, self.new_name) | ||||
|         if self.allow_migrate_model(schema_editor.connection.alias, new_model): | ||||
|             old_model = from_state.apps.get_model(app_label, self.old_name) | ||||
|             old_db_table = old_model._meta.db_table | ||||
|             new_db_table = new_model._meta.db_table | ||||
|             # Don't alter when a table name is not changed. | ||||
|             if old_db_table == new_db_table: | ||||
|                 return | ||||
|             # Move the main table | ||||
|             schema_editor.alter_db_table(new_model, old_db_table, new_db_table) | ||||
|             schema_editor.alter_db_table( | ||||
|                 new_model, | ||||
|                 old_model._meta.db_table, | ||||
|                 new_model._meta.db_table, | ||||
|             ) | ||||
|             # Alter the fields pointing to us | ||||
|             for related_object in old_model._meta.related_objects: | ||||
|                 if related_object.related_model == old_model: | ||||
|   | ||||
| @@ -46,3 +46,6 @@ Bugfixes | ||||
|  | ||||
| * Fixed a migration crash on ``ManyToManyField`` fields with ``through`` | ||||
|   referencing models in different apps (:ticket:`33938`). | ||||
|  | ||||
| * Fixed a regression in Django 4.1 that caused an incorrect migration when | ||||
|   renaming a model with ``ManyToManyField`` and ``db_table`` (:ticket:`33953`). | ||||
|   | ||||
| @@ -1052,8 +1052,8 @@ class OperationTests(OperationTestBase): | ||||
|             Pony._meta.get_field("riders").remote_field.through.objects.count(), 2 | ||||
|         ) | ||||
|  | ||||
|     def test_rename_model_with_db_table_noop(self): | ||||
|         app_label = "test_rmwdbtn" | ||||
|     def test_rename_model_with_db_table_rename_m2m(self): | ||||
|         app_label = "test_rmwdbrm2m" | ||||
|         project_state = self.apply_operations( | ||||
|             app_label, | ||||
|             ProjectState(), | ||||
| @@ -1063,32 +1063,28 @@ class OperationTests(OperationTestBase): | ||||
|                     fields=[ | ||||
|                         ("id", models.AutoField(primary_key=True)), | ||||
|                     ], | ||||
|                     options={"db_table": "rider"}, | ||||
|                 ), | ||||
|                 migrations.CreateModel( | ||||
|                     "Pony", | ||||
|                     fields=[ | ||||
|                         ("id", models.AutoField(primary_key=True)), | ||||
|                         ( | ||||
|                             "rider", | ||||
|                             models.ForeignKey("%s.Rider" % app_label, models.CASCADE), | ||||
|                         ), | ||||
|                         ("riders", models.ManyToManyField("Rider")), | ||||
|                     ], | ||||
|                     options={"db_table": "pony"}, | ||||
|                 ), | ||||
|             ], | ||||
|         ) | ||||
|         new_state = project_state.clone() | ||||
|         operation = migrations.RenameModel("Rider", "Runner") | ||||
|         operation = migrations.RenameModel("Pony", "PinkPony") | ||||
|         operation.state_forwards(app_label, new_state) | ||||
|  | ||||
|         with connection.schema_editor() as editor: | ||||
|             with self.assertNumQueries(0): | ||||
|             operation.database_forwards(app_label, editor, project_state, new_state) | ||||
|         with connection.schema_editor() as editor: | ||||
|             with self.assertNumQueries(0): | ||||
|                 operation.database_backwards( | ||||
|                     app_label, editor, new_state, project_state | ||||
|                 ) | ||||
|  | ||||
|         Pony = new_state.apps.get_model(app_label, "PinkPony") | ||||
|         Rider = new_state.apps.get_model(app_label, "Rider") | ||||
|         pony = Pony.objects.create() | ||||
|         rider = Rider.objects.create() | ||||
|         pony.riders.add(rider) | ||||
|  | ||||
|     def test_rename_m2m_target_model(self): | ||||
|         app_label = "test_rename_m2m_target_model" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user