diff options
Diffstat (limited to 'django/db/models/fields/related.py')
| -rw-r--r-- | django/db/models/fields/related.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py index 75b533b0a8..88bc0b5c15 100644 --- a/django/db/models/fields/related.py +++ b/django/db/models/fields/related.py @@ -923,6 +923,21 @@ class ForeignKey(ForeignObject): }, # 'pk' is included for backwards compatibility ) + def resolve_related_fields(self): + related_fields = super().resolve_related_fields() + for from_field, to_field in related_fields: + if to_field and to_field.model != self.remote_field.model._meta.concrete_model: + raise exceptions.FieldError( + "'%s.%s' refers to field '%s' which is not local to model " + "'%s'." % ( + self.model._meta.label, + self.name, + to_field.name, + self.remote_field.model._meta.concrete_model._meta.label, + ) + ) + return related_fields + def get_attname(self): return '%s_id' % self.name |
