diff options
| author | Andrew Godwin <andrew@aeracode.org> | 2014-06-16 10:28:31 -0700 |
|---|---|---|
| committer | Andrew Godwin <andrew@aeracode.org> | 2014-06-16 10:29:00 -0700 |
| commit | 02860e779c7a93e50817df55d8a7f64b642319eb (patch) | |
| tree | 22bbbddcbce1e5d83da00b537929c2ffa5da7242 | |
| parent | d9a7663b11269ca0adda26ad16e47350b680bab5 (diff) | |
[1.7.x] Fixed #22847: Optimizer wasn't expecting unresolved FKs
| -rw-r--r-- | django/db/migrations/optimizer.py | 11 |
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 [ |
