summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2014-06-16 10:28:31 -0700
committerAndrew Godwin <andrew@aeracode.org>2014-06-16 10:29:00 -0700
commit02860e779c7a93e50817df55d8a7f64b642319eb (patch)
tree22bbbddcbce1e5d83da00b537929c2ffa5da7242
parentd9a7663b11269ca0adda26ad16e47350b680bab5 (diff)
[1.7.x] Fixed #22847: Optimizer wasn't expecting unresolved FKs
-rw-r--r--django/db/migrations/optimizer.py11
1 files changed, 7 insertions, 4 deletions
diff --git a/django/db/migrations/optimizer.py b/django/db/migrations/optimizer.py
index 8e285c8b76..52a822ebf7 100644
--- a/django/db/migrations/optimizer.py
+++ b/django/db/migrations/optimizer.py
@@ -1,6 +1,7 @@
from __future__ import unicode_literals
from django.db import migrations
+from django.utils import six
class MigrationOptimizer(object):
@@ -205,10 +206,12 @@ class MigrationOptimizer(object):
# Don't allow optimisations of FKs through models they reference
if hasattr(other.field, "rel") and other.field.rel:
for between in in_between:
- if between.references_model(
- other.field.rel.to._meta.object_name,
- other.field.rel.to._meta.app_label,
- ):
+ if isinstance(other.field.rel.to, six.string_types):
+ object_name, app_label = other.field.rel.to.split(".", 1)
+ else:
+ object_name = other.field.rel.to._meta.object_name
+ app_label = other.field.rel.to._meta.app_label
+ if between.references_model(object_name, app_label):
return None
# OK, that's fine
return [