mirror of https://github.com/django/django.git
Fixed #21968: Bad detection of old-style apps to add initial migration
This commit is contained in:
parent
75a96f06e9
commit
2085f53f56
|
@ -47,7 +47,9 @@ class Command(BaseCommand):
|
||||||
|
|
||||||
# Load the current graph state. Takes a connection, but it's not used
|
# Load the current graph state. Takes a connection, but it's not used
|
||||||
# (makemigrations doesn't look at the database state).
|
# (makemigrations doesn't look at the database state).
|
||||||
|
# Also make sure the graph is built without unmigrated apps shoehorned in.
|
||||||
loader = MigrationLoader(connections[DEFAULT_DB_ALIAS])
|
loader = MigrationLoader(connections[DEFAULT_DB_ALIAS])
|
||||||
|
loader.build_graph(ignore_unmigrated=True)
|
||||||
|
|
||||||
# Before anything else, see if there's conflicting apps and drop out
|
# Before anything else, see if there's conflicting apps and drop out
|
||||||
# hard if there are any and they don't want to merge
|
# hard if there are any and they don't want to merge
|
||||||
|
|
|
@ -135,7 +135,7 @@ class MigrationLoader(object):
|
||||||
else:
|
else:
|
||||||
return self.disk_migrations[results[0]]
|
return self.disk_migrations[results[0]]
|
||||||
|
|
||||||
def build_graph(self):
|
def build_graph(self, ignore_unmigrated=False):
|
||||||
"""
|
"""
|
||||||
Builds a migration dependency graph using both the disk and database.
|
Builds a migration dependency graph using both the disk and database.
|
||||||
You'll need to rebuild the graph if you apply migrations. This isn't
|
You'll need to rebuild the graph if you apply migrations. This isn't
|
||||||
|
@ -200,6 +200,10 @@ class MigrationLoader(object):
|
||||||
# even have migrations.
|
# even have migrations.
|
||||||
if parent[1] == "__first__" and parent not in self.graph:
|
if parent[1] == "__first__" and parent not in self.graph:
|
||||||
if parent[0] in self.unmigrated_apps:
|
if parent[0] in self.unmigrated_apps:
|
||||||
|
if ignore_unmigrated:
|
||||||
|
migration.dependencies.remove(parent)
|
||||||
|
parent = None
|
||||||
|
else:
|
||||||
# This app isn't migrated, but something depends on it.
|
# This app isn't migrated, but something depends on it.
|
||||||
# We'll add a fake initial migration for it into the
|
# We'll add a fake initial migration for it into the
|
||||||
# graph.
|
# graph.
|
||||||
|
@ -226,6 +230,7 @@ class MigrationLoader(object):
|
||||||
parent = list(self.graph.root_nodes(parent[0]))[0]
|
parent = list(self.graph.root_nodes(parent[0]))[0]
|
||||||
else:
|
else:
|
||||||
raise ValueError("Dependency on unknown app %s" % parent[0])
|
raise ValueError("Dependency on unknown app %s" % parent[0])
|
||||||
|
if parent is not None:
|
||||||
self.graph.add_dependency(key, parent)
|
self.graph.add_dependency(key, parent)
|
||||||
|
|
||||||
def detect_conflicts(self):
|
def detect_conflicts(self):
|
||||||
|
|
Loading…
Reference in New Issue