summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2013-08-20 01:52:32 -0400
committerSimon Charette <charette.s@gmail.com>2013-10-03 13:20:05 -0400
commitfa2e1371cda1e72d82b4133ad0b49a18e43ba411 (patch)
tree9d732e2ac0eb0b89cfc37ecccab41fe64eb31b33 /django
parentc4db7f075e269411287ff14b5518412250ba455f (diff)
Fixed #21216 -- Allow `OneToOneField` reverse accessor to be hidden.
Diffstat (limited to 'django')
-rw-r--r--django/db/models/fields/related.py8
1 files changed, 3 insertions, 5 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 6cd8d193f5..aa2a83bd97 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -960,6 +960,7 @@ class ManyToManyRel(object):
class ForeignObject(RelatedField):
requires_unique_target = True
generate_reverse_relation = True
+ related_accessor_class = ForeignRelatedObjectsDescriptor
def __init__(self, to, from_fields, to_fields, **kwargs):
self.from_fields = from_fields
@@ -1160,7 +1161,7 @@ class ForeignObject(RelatedField):
# Internal FK's - i.e., those with a related name ending with '+' -
# and swapped models don't get a related descriptor.
if not self.rel.is_hidden() and not related.model._meta.swapped:
- setattr(cls, related.get_accessor_name(), ForeignRelatedObjectsDescriptor(related))
+ setattr(cls, related.get_accessor_name(), self.related_accessor_class(related))
if self.rel.limit_choices_to:
cls._meta.related_fkey_lookups.append(self.rel.limit_choices_to)
@@ -1334,6 +1335,7 @@ class OneToOneField(ForeignKey):
always returns the object pointed to (since there will only ever be one),
rather than returning a list.
"""
+ related_accessor_class = SingleRelatedObjectDescriptor
description = _("One-to-one relationship")
def __init__(self, to, to_field=None, **kwargs):
@@ -1346,10 +1348,6 @@ class OneToOneField(ForeignKey):
del kwargs['unique']
return name, path, args, kwargs
- def contribute_to_related_class(self, cls, related):
- setattr(cls, related.get_accessor_name(),
- SingleRelatedObjectDescriptor(related))
-
def formfield(self, **kwargs):
if self.rel.parent_link:
return None