mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #35180 -- Recreated PostgreSQL _like indexes when changing between TextField and CharField field types.
This commit is contained in:
parent
b50d1a020d
commit
0eaaadd47f
2 changed files with 61 additions and 7 deletions
|
@ -5223,6 +5223,51 @@ class SchemaTests(TransactionTestCase):
|
|||
["schema_tag_slug_2c418ba3_like", "schema_tag_slug_key"],
|
||||
)
|
||||
|
||||
@isolate_apps("schema")
|
||||
@unittest.skipUnless(connection.vendor == "postgresql", "PostgreSQL specific")
|
||||
def test_indexed_charfield_to_textfield(self):
|
||||
class SimpleModel(Model):
|
||||
field1 = CharField(max_length=10, db_index=True)
|
||||
|
||||
class Meta:
|
||||
app_label = "schema"
|
||||
|
||||
with connection.schema_editor() as editor:
|
||||
editor.create_model(SimpleModel)
|
||||
self.assertEqual(
|
||||
self.get_constraints_for_column(SimpleModel, "field1"),
|
||||
[
|
||||
"schema_simplemodel_field1_f07a3d6a",
|
||||
"schema_simplemodel_field1_f07a3d6a_like",
|
||||
],
|
||||
)
|
||||
# Change to TextField.
|
||||
old_field1 = SimpleModel._meta.get_field("field1")
|
||||
new_field1 = TextField(db_index=True)
|
||||
new_field1.set_attributes_from_name("field1")
|
||||
with connection.schema_editor() as editor:
|
||||
editor.alter_field(SimpleModel, old_field1, new_field1, strict=True)
|
||||
self.assertEqual(
|
||||
self.get_constraints_for_column(SimpleModel, "field1"),
|
||||
[
|
||||
"schema_simplemodel_field1_f07a3d6a",
|
||||
"schema_simplemodel_field1_f07a3d6a_like",
|
||||
],
|
||||
)
|
||||
# Change back to CharField.
|
||||
old_field1 = SimpleModel._meta.get_field("field1")
|
||||
new_field1 = CharField(max_length=10, db_index=True)
|
||||
new_field1.set_attributes_from_name("field1")
|
||||
with connection.schema_editor() as editor:
|
||||
editor.alter_field(SimpleModel, old_field1, new_field1, strict=True)
|
||||
self.assertEqual(
|
||||
self.get_constraints_for_column(SimpleModel, "field1"),
|
||||
[
|
||||
"schema_simplemodel_field1_f07a3d6a",
|
||||
"schema_simplemodel_field1_f07a3d6a_like",
|
||||
],
|
||||
)
|
||||
|
||||
def test_alter_field_add_index_to_integerfield(self):
|
||||
# Create the table and verify no initial indexes.
|
||||
with connection.schema_editor() as editor:
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue