diff --git a/django/db/migrations/autodetector.py b/django/db/migrations/autodetector.py index d96f09b0be..e3dd87e3bd 100644 --- a/django/db/migrations/autodetector.py +++ b/django/db/migrations/autodetector.py @@ -108,7 +108,7 @@ class MigrationAutodetector(object): # Prepare some old/new state and model lists, separating # proxy models and ignoring unmigrated apps. - self.old_apps = self.from_state.apps + self.old_apps = self.from_state.concrete_apps self.new_apps = self.to_state.apps self.old_model_keys = [] self.old_proxy_keys = [] diff --git a/django/db/migrations/state.py b/django/db/migrations/state.py index f2267b3536..8898fc4e9a 100644 --- a/django/db/migrations/state.py +++ b/django/db/migrations/state.py @@ -44,6 +44,11 @@ class ProjectState(object): def apps(self): return StateApps(self.real_apps, self.models) + @property + def concrete_apps(self): + self.apps = StateApps(self.real_apps, self.models, ignore_swappable=True) + return self.apps + @classmethod def from_apps(cls, apps): "Takes in an Apps and returns a ProjectState matching it" @@ -87,7 +92,7 @@ class StateApps(Apps): Subclass of the global Apps registry class to better handle dynamic model additions and removals. """ - def __init__(self, real_apps, models): + def __init__(self, real_apps, models, ignore_swappable=False): # Any apps in self.real_apps should have all their models included # in the render. We don't use the original model instances as there # are some variables that refer to the Apps object.