Fixed #22331 -- Fixed migrations ProjectState to ignore unmanaged models.
This commit is contained in:
parent
86dcac4634
commit
69d4b1c3ea
|
@ -58,8 +58,9 @@ class ProjectState(object):
|
|||
"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):
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue