Loading tests/migrations/test_state.py +9 −0 Original line number Diff line number Diff line Loading @@ -396,17 +396,22 @@ class StateTests(TestCase): #24573 - Adding relations to existing models should reload the referenced models too. """ new_apps = Apps() class A(models.Model): class Meta: app_label = 'something' apps = new_apps class B(A): class Meta: app_label = 'something' apps = new_apps class C(models.Model): class Meta: app_label = 'something' apps = new_apps project_state = ProjectState() project_state.add_model(ModelState.from_model(A)) Loading Loading @@ -447,15 +452,19 @@ class StateTests(TestCase): #24225 - Tests that relations between models are updated while remaining the relations and references for models of an old state. """ new_apps = Apps() class A(models.Model): class Meta: app_label = "something" apps = new_apps class B(models.Model): to_a = models.ForeignKey(A) class Meta: app_label = "something" apps = new_apps def get_model_a(state): return [mod for mod in state.apps.get_models() if mod._meta.model_name == 'a'][0] Loading tests/schema/tests.py +10 −3 Original line number Diff line number Diff line Loading @@ -765,8 +765,10 @@ class SchemaTests(TransactionTestCase): app_label = 'schema' apps = new_apps self.local_models = [LocalBookWithM2M] self.local_models = [ LocalBookWithM2M, LocalBookWithM2M._meta.get_field('tags').remote_field.through, ] # Create the tables with connection.schema_editor() as editor: editor.create_model(Author) Loading Loading @@ -845,6 +847,7 @@ class SchemaTests(TransactionTestCase): # Create an M2M field new_field = M2MFieldClass("schema.TagM2MTest", related_name="authors") new_field.contribute_to_class(LocalAuthorWithM2M, "tags") self.local_models += [new_field.remote_field.through] # Ensure there's no m2m table there self.assertRaises(DatabaseError, self.column_classes, new_field.remote_field.through) # Add the field Loading Loading @@ -934,7 +937,10 @@ class SchemaTests(TransactionTestCase): app_label = 'schema' apps = new_apps self.local_models = [LocalBookWithM2M] self.local_models = [ LocalBookWithM2M, LocalBookWithM2M._meta.get_field('tags').remote_field.through, ] # Create the tables with connection.schema_editor() as editor: Loading @@ -955,6 +961,7 @@ class SchemaTests(TransactionTestCase): old_field = LocalBookWithM2M._meta.get_field("tags") new_field = M2MFieldClass(UniqueTest) new_field.contribute_to_class(LocalBookWithM2M, "uniques") self.local_models += [new_field.remote_field.through] with connection.schema_editor() as editor: editor.alter_field(LocalBookWithM2M, old_field, new_field) # Ensure old M2M is gone Loading Loading
tests/migrations/test_state.py +9 −0 Original line number Diff line number Diff line Loading @@ -396,17 +396,22 @@ class StateTests(TestCase): #24573 - Adding relations to existing models should reload the referenced models too. """ new_apps = Apps() class A(models.Model): class Meta: app_label = 'something' apps = new_apps class B(A): class Meta: app_label = 'something' apps = new_apps class C(models.Model): class Meta: app_label = 'something' apps = new_apps project_state = ProjectState() project_state.add_model(ModelState.from_model(A)) Loading Loading @@ -447,15 +452,19 @@ class StateTests(TestCase): #24225 - Tests that relations between models are updated while remaining the relations and references for models of an old state. """ new_apps = Apps() class A(models.Model): class Meta: app_label = "something" apps = new_apps class B(models.Model): to_a = models.ForeignKey(A) class Meta: app_label = "something" apps = new_apps def get_model_a(state): return [mod for mod in state.apps.get_models() if mod._meta.model_name == 'a'][0] Loading
tests/schema/tests.py +10 −3 Original line number Diff line number Diff line Loading @@ -765,8 +765,10 @@ class SchemaTests(TransactionTestCase): app_label = 'schema' apps = new_apps self.local_models = [LocalBookWithM2M] self.local_models = [ LocalBookWithM2M, LocalBookWithM2M._meta.get_field('tags').remote_field.through, ] # Create the tables with connection.schema_editor() as editor: editor.create_model(Author) Loading Loading @@ -845,6 +847,7 @@ class SchemaTests(TransactionTestCase): # Create an M2M field new_field = M2MFieldClass("schema.TagM2MTest", related_name="authors") new_field.contribute_to_class(LocalAuthorWithM2M, "tags") self.local_models += [new_field.remote_field.through] # Ensure there's no m2m table there self.assertRaises(DatabaseError, self.column_classes, new_field.remote_field.through) # Add the field Loading Loading @@ -934,7 +937,10 @@ class SchemaTests(TransactionTestCase): app_label = 'schema' apps = new_apps self.local_models = [LocalBookWithM2M] self.local_models = [ LocalBookWithM2M, LocalBookWithM2M._meta.get_field('tags').remote_field.through, ] # Create the tables with connection.schema_editor() as editor: Loading @@ -955,6 +961,7 @@ class SchemaTests(TransactionTestCase): old_field = LocalBookWithM2M._meta.get_field("tags") new_field = M2MFieldClass(UniqueTest) new_field.contribute_to_class(LocalBookWithM2M, "uniques") self.local_models += [new_field.remote_field.through] with connection.schema_editor() as editor: editor.alter_field(LocalBookWithM2M, old_field, new_field) # Ensure old M2M is gone Loading