Commit 34d52fd3 authored by Loic Bistuer's avatar Loic Bistuer Committed by Tim Graham
Browse files

Fixed #21010 -- Changed ModelState to only copy _meta.local_fields.

parent 533d1ab3
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -70,7 +70,7 @@ class ModelState(object):
        """
        # Deconstruct the fields
        fields = []
        for field in model._meta.fields:
        for field in model._meta.local_fields:
            name, path, args, kwargs = field.deconstruct()
            field_class = import_by_path(path)
            fields.append((name, field_class(*args, **kwargs)))
+19 −0
Original line number Diff line number Diff line
@@ -75,3 +75,22 @@ class StateTests(TestCase):
        new_app_cache = project_state.render()
        self.assertEqual(new_app_cache.get_model("migrations", "Tag")._meta.get_field_by_name("name")[0].max_length, 100)
        self.assertEqual(new_app_cache.get_model("migrations", "Tag")._meta.get_field_by_name("hidden")[0].null, False)

    def test_render_multiple_inheritance(self):
        # Use a custom app cache to avoid polluting the global one.
        new_app_cache = BaseAppCache()

        class Book(models.Model):
            title = models.CharField(max_length=1000)

            class Meta:
                app_label = "migrations"
                app_cache = new_app_cache

        class Novel(Book):
            class Meta:
                app_label = "migrations"
                app_cache = new_app_cache

        yet_another_app_cache = BaseAppCache()
        ModelState.from_model(Novel).render(yet_another_app_cache)