Refs #32743 -- Fixed recreation of foreign key constraints when altering type of referenced primary key with MTI.
Follow up to 325d7710ce
.
This commit is contained in:
parent
11879530a3
commit
3d9040a50b
1
AUTHORS
1
AUTHORS
|
@ -483,6 +483,7 @@ answer newbie questions, and generally made Django that much better:
|
|||
Jonathan Daugherty (cygnus) <http://www.cprogrammer.org/>
|
||||
Jonathan Feignberg <jdf@pobox.com>
|
||||
Jonathan Slenders
|
||||
Jordan Bae <qoentlr37@gmail.com>
|
||||
Jordan Dimov <s3x3y1@gmail.com>
|
||||
Jordi J. Tablada <jordi.joan@gmail.com>
|
||||
Jorge Bastida <me@jorgebastida.com>
|
||||
|
|
|
@ -849,8 +849,8 @@ class BaseDatabaseSchemaEditor:
|
|||
self.execute(self._create_fk_sql(model, new_field, "_fk_%(to_table)s_%(to_column)s"))
|
||||
# Rebuild FKs that pointed to us if we previously had to drop them
|
||||
if drop_foreign_keys:
|
||||
for rel in new_field.model._meta.related_objects:
|
||||
if _is_relevant_relation(rel, new_field) and rel.field.db_constraint:
|
||||
for _, rel in rels_to_update:
|
||||
if rel.field.db_constraint:
|
||||
self.execute(self._create_fk_sql(rel.related_model, rel.field, "_fk"))
|
||||
# Does it have check constraints we need to add?
|
||||
if old_db_params['check'] != new_db_params['check'] and new_db_params['check']:
|
||||
|
|
|
@ -1551,10 +1551,32 @@ class OperationTests(OperationTestBase):
|
|||
with connection.schema_editor() as editor:
|
||||
operation.database_forwards(app_label, editor, project_state, new_state)
|
||||
assertIdTypeEqualsMTIFkType()
|
||||
if connection.features.supports_foreign_keys:
|
||||
self.assertFKExists(
|
||||
f'{app_label}_shetlandpony',
|
||||
['pony_ptr_id'],
|
||||
(f'{app_label}_pony', 'id'),
|
||||
)
|
||||
self.assertFKExists(
|
||||
f'{app_label}_shetlandrider',
|
||||
['pony_id'],
|
||||
(f'{app_label}_shetlandpony', 'pony_ptr_id'),
|
||||
)
|
||||
# Reversal.
|
||||
with connection.schema_editor() as editor:
|
||||
operation.database_backwards(app_label, editor, new_state, project_state)
|
||||
assertIdTypeEqualsMTIFkType()
|
||||
if connection.features.supports_foreign_keys:
|
||||
self.assertFKExists(
|
||||
f'{app_label}_shetlandpony',
|
||||
['pony_ptr_id'],
|
||||
(f'{app_label}_pony', 'id'),
|
||||
)
|
||||
self.assertFKExists(
|
||||
f'{app_label}_shetlandrider',
|
||||
['pony_id'],
|
||||
(f'{app_label}_shetlandpony', 'pony_ptr_id'),
|
||||
)
|
||||
|
||||
@skipUnlessDBFeature('supports_foreign_keys')
|
||||
def test_alter_field_reloads_state_on_fk_with_to_field_target_type_change(self):
|
||||
|
|
Loading…
Reference in New Issue