mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Fixed #31825 -- Made RenameField operation a noop for fields with db_column.
This commit is contained in:
committed by
Mariusz Felisiak
parent
20799cc0a6
commit
7f4c9222df
@@ -538,6 +538,8 @@ class BaseDatabaseSchemaEditor:
|
||||
If `strict` is True, raise errors if the old column does not match
|
||||
`old_field` precisely.
|
||||
"""
|
||||
if not self._field_should_be_altered(old_field, new_field):
|
||||
return
|
||||
# Ensure this field is even column-based
|
||||
old_db_params = old_field.db_parameters(connection=self.connection)
|
||||
old_type = old_db_params['type']
|
||||
@@ -1034,6 +1036,13 @@ class BaseDatabaseSchemaEditor:
|
||||
output.append(self._create_index_sql(model, [field]))
|
||||
return output
|
||||
|
||||
def _field_should_be_altered(self, old_field, new_field):
|
||||
# Don't alter when changing only a field name.
|
||||
return (
|
||||
old_field.column != new_field.column or
|
||||
old_field.deconstruct()[1:] != new_field.deconstruct()[1:]
|
||||
)
|
||||
|
||||
def _field_should_be_indexed(self, model, field):
|
||||
return field.db_index and not field.unique
|
||||
|
||||
|
||||
@@ -99,6 +99,8 @@ class DatabaseSchemaEditor(BaseDatabaseSchemaEditor):
|
||||
super().alter_db_table(model, old_db_table, new_db_table)
|
||||
|
||||
def alter_field(self, model, old_field, new_field, strict=False):
|
||||
if not self._field_should_be_altered(old_field, new_field):
|
||||
return
|
||||
old_field_name = old_field.name
|
||||
table_name = model._meta.db_table
|
||||
_, old_column_name = old_field.get_attname_column()
|
||||
|
||||
Reference in New Issue
Block a user