Skip to content

Instantly share code, notes, and snippets.

@loic
Created September 22, 2014 09:04
Show Gist options
  • Save loic/81a638094c723a51bb47 to your computer and use it in GitHub Desktop.
Save loic/81a638094c723a51bb47 to your computer and use it in GitHub Desktop.
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 1f580de..af6bf57 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -370,7 +370,12 @@ class SingleRelatedObjectDescriptor(object):
return hasattr(instance, self.cache_name)
def get_queryset(self, **hints):
- return self.related.model._base_manager.db_manager(hints=hints).all()
+ manager = self.related.model._default_manager
+ # If the related manager indicates that it should be used for
+ # related fields, respect that.
+ if not getattr(manager, 'use_for_related_fields', False):
+ manager = self.related.model._base_manager
+ return manager.db_manager(hints=hints).all()
def get_prefetch_queryset(self, instances, queryset=None):
if queryset is None:
@@ -496,13 +501,12 @@ class ReverseSingleRelatedObjectDescriptor(object):
return hasattr(instance, self.cache_name)
def get_queryset(self, **hints):
- rel_mgr = self.field.rel.to._default_manager.db_manager(hints=hints)
+ manager = self.field.rel.to._default_manager
# If the related manager indicates that it should be used for
# related fields, respect that.
- if getattr(rel_mgr, 'use_for_related_fields', False):
- return rel_mgr.all()
- else:
- return QuerySet(self.field.rel.to, hints=hints)
+ if not getattr(manager, 'use_for_related_fields', False):
+ manager = self.field.rel.to._base_manager
+ return manager.db_manager(hints=hints).all()
def get_prefetch_queryset(self, instances, queryset=None):
if queryset is None:
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment