Commit 69d4b1c3 authored by Loic Bistuer's avatar Loic Bistuer Committed by Tim Graham
Browse files

Fixed #22331 -- Fixed migrations ProjectState to ignore unmanaged models.

parent 86dcac46
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ class ProjectState(object):
        "Takes in an Apps and returns a ProjectState matching it"
        app_models = {}
        for model in apps.get_models():
            if model._meta.managed:
                model_state = ModelState.from_model(model)
                app_models[(model_state.app_label, model_state.name.lower())] = model_state
        return cls(app_models)
+11 −0
Original line number Diff line number Diff line
@@ -52,11 +52,22 @@ class StateTests(TestCase):
                verbose_name = "tome"
                db_table = "test_tome"

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

            class Meta:
                app_label = "migrations"
                apps = new_apps
                managed = False

        project_state = ProjectState.from_apps(new_apps)
        author_state = project_state.models['migrations', 'author']
        author_proxy_state = project_state.models['migrations', 'authorproxy']
        sub_author_state = project_state.models['migrations', 'subauthor']
        book_state = project_state.models['migrations', 'book']
        # unmanaged models should not appear in migrations
        with self.assertRaises(KeyError):
            project_state.models['migrations', 'unmanaged']

        self.assertEqual(author_state.app_label, "migrations")
        self.assertEqual(author_state.name, "Author")