summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2016-02-22 16:05:47 -0500
committerSimon Charette <charette.s@gmail.com>2016-02-29 22:13:54 -0500
commit48cf7516409c668bf11e24e6b7cd8eaea13ae3b8 (patch)
tree5b4c48da5e86dcf2cf6412fde0ce67dff01147fa /django
parente9234569f69e0afcc97b3b1ff5293bad1678a076 (diff)
[1.9.x] Fixed #26186 -- Documented how app relative relationships of abstract models behave.
This partially reverts commit bc7d201bdbaeac14a49f51a9ef292d6312b4c45e. Thanks Tim for the review. Refs #25858. Backport of 0223e213dd690b6b6e0669f836a20efb10998c83 from master
Diffstat (limited to 'django')
-rw-r--r--django/db/models/fields/related.py21
1 files changed, 6 insertions, 15 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 31434864cd..5d9b881c16 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -40,7 +40,7 @@ from .reverse_related import (
RECURSIVE_RELATIONSHIP_CONSTANT = 'self'
-def resolve_relation(scope_model, relation, resolve_recursive_relationship=True):
+def resolve_relation(scope_model, relation):
"""
Transform relation into a model or fully-qualified model string of the form
"app_label.ModelName", relative to scope_model.
@@ -55,11 +55,12 @@ def resolve_relation(scope_model, relation, resolve_recursive_relationship=True)
"""
# Check for recursive relations
if relation == RECURSIVE_RELATIONSHIP_CONSTANT:
- if resolve_recursive_relationship:
- relation = scope_model
+ relation = scope_model
+
# Look for an "app.Model" relation
- elif isinstance(relation, six.string_types) and '.' not in relation:
- relation = "%s.%s" % (scope_model._meta.app_label, relation)
+ if isinstance(relation, six.string_types):
+ if "." not in relation:
+ relation = "%s.%s" % (scope_model._meta.app_label, relation)
return relation
@@ -303,11 +304,6 @@ class RelatedField(Field):
field.remote_field.model = related
field.do_related_class(related, model)
lazy_related_operation(resolve_related_class, cls, self.remote_field.model, field=self)
- else:
- # Bind a lazy reference to the app in which the model is defined.
- self.remote_field.model = resolve_relation(
- cls, self.remote_field.model, resolve_recursive_relationship=False
- )
def get_forward_related_filter(self, obj):
"""
@@ -1584,11 +1580,6 @@ class ManyToManyField(RelatedField):
lazy_related_operation(resolve_through_model, cls, self.remote_field.through, field=self)
elif not cls._meta.swapped:
self.remote_field.through = create_many_to_many_intermediary_model(self, cls)
- else:
- # Bind a lazy reference to the app in which the model is defined.
- self.remote_field.through = resolve_relation(
- cls, self.remote_field.through, resolve_recursive_relationship=False
- )
# Add the descriptor for the m2m relation.
setattr(cls, self.name, ManyToManyDescriptor(self.remote_field, reverse=False))