Fixed #23013 -- Fixed removing unique_together/index_together constraints in migrations.
Thanks melinath for the report.
This commit is contained in:
parent
b65a2001e7
commit
0154965392
|
@ -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.
|
||||||
|
|
Loading…
Reference in New Issue