Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Fixed #22331 -- Fixed migrations ProjectState to ignore unmanaged mod…

…els.
  • Loading branch information...
commit 69d4b1c3ea64f298380b0531c34509ae5eec89b9 1 parent 86dcac4
@loic loic authored timgraham committed
Showing with 14 additions and 2 deletions.
  1. +3 −2 django/db/migrations/state.py
  2. +11 −0 tests/migrations/test_state.py
View
5 django/db/migrations/state.py
@@ -58,8 +58,9 @@ def from_apps(cls, apps):
"Takes in an Apps and returns a ProjectState matching it"
app_models = {}
for model in apps.get_models():
- model_state = ModelState.from_model(model)
- app_models[(model_state.app_label, model_state.name.lower())] = model_state
+ 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)
def __eq__(self, other):
View
11 tests/migrations/test_state.py
@@ -52,11 +52,22 @@ class Meta:
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")
Please sign in to comment.
Something went wrong with that request. Please try again.