mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	[1.7.x] Fixed #23013 -- Fixed removing unique_together/index_together constraints in migrations.
Thanks melinath for the report.
Backport of 0154965392 from master
			
			
This commit is contained in:
		| @@ -248,7 +248,7 @@ class AlterUniqueTogether(Operation): | |||||||
|         return name.lower() == self.name.lower() |         return name.lower() == self.name.lower() | ||||||
|  |  | ||||||
|     def describe(self): |     def describe(self): | ||||||
|         return "Alter %s for %s (%s constraint(s))" % (self.option_name, self.name, len(self.unique_together)) |         return "Alter %s for %s (%s constraint(s))" % (self.option_name, self.name, len(self.unique_together or '')) | ||||||
|  |  | ||||||
|  |  | ||||||
| class AlterIndexTogether(Operation): | class AlterIndexTogether(Operation): | ||||||
| @@ -288,7 +288,7 @@ class AlterIndexTogether(Operation): | |||||||
|         return name.lower() == self.name.lower() |         return name.lower() == self.name.lower() | ||||||
|  |  | ||||||
|     def describe(self): |     def describe(self): | ||||||
|         return "Alter %s for %s (%s constraint(s))" % (self.option_name, self.name, len(self.index_together)) |         return "Alter %s for %s (%s constraint(s))" % (self.option_name, self.name, len(self.index_together or '')) | ||||||
|  |  | ||||||
|  |  | ||||||
| class AlterOrderWithRespectTo(Operation): | class AlterOrderWithRespectTo(Operation): | ||||||
|   | |||||||
| @@ -272,8 +272,6 @@ class ModelState(object): | |||||||
|         # First, make a Meta object |         # First, make a Meta object | ||||||
|         meta_contents = {'app_label': self.app_label, "apps": apps} |         meta_contents = {'app_label': self.app_label, "apps": apps} | ||||||
|         meta_contents.update(self.options) |         meta_contents.update(self.options) | ||||||
|         if "unique_together" in meta_contents: |  | ||||||
|             meta_contents["unique_together"] = list(meta_contents["unique_together"]) |  | ||||||
|         meta = type(str("Meta"), tuple(), meta_contents) |         meta = type(str("Meta"), tuple(), meta_contents) | ||||||
|         # Then, work out our bases |         # Then, work out our bases | ||||||
|         try: |         try: | ||||||
|   | |||||||
| @@ -899,6 +899,10 @@ class OperationTests(OperationTestBase): | |||||||
|         operation.state_forwards("test_alunto", new_state) |         operation.state_forwards("test_alunto", new_state) | ||||||
|         self.assertEqual(len(new_state.models["test_alunto", "pony"].options.get("unique_together", set())), 1) |         self.assertEqual(len(new_state.models["test_alunto", "pony"].options.get("unique_together", set())), 1) | ||||||
|  |  | ||||||
|  |     def test_alter_unique_together_remove(self): | ||||||
|  |         operation = migrations.AlterUniqueTogether("Pony", None) | ||||||
|  |         self.assertEqual(operation.describe(), "Alter unique_together for Pony (0 constraint(s))") | ||||||
|  |  | ||||||
|     def test_alter_index_together(self): |     def test_alter_index_together(self): | ||||||
|         """ |         """ | ||||||
|         Tests the AlterIndexTogether operation. |         Tests the AlterIndexTogether operation. | ||||||
| @@ -922,6 +926,10 @@ class OperationTests(OperationTestBase): | |||||||
|             operation.database_backwards("test_alinto", editor, new_state, project_state) |             operation.database_backwards("test_alinto", editor, new_state, project_state) | ||||||
|         self.assertIndexNotExists("test_alinto_pony", ["pink", "weight"]) |         self.assertIndexNotExists("test_alinto_pony", ["pink", "weight"]) | ||||||
|  |  | ||||||
|  |     def test_alter_index_together_remove(self): | ||||||
|  |         operation = migrations.AlterIndexTogether("Pony", None) | ||||||
|  |         self.assertEqual(operation.describe(), "Alter index_together for Pony (0 constraint(s))") | ||||||
|  |  | ||||||
|     def test_alter_model_options(self): |     def test_alter_model_options(self): | ||||||
|         """ |         """ | ||||||
|         Tests the AlterModelOptions operation. |         Tests the AlterModelOptions operation. | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user