summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorJacob Kaplan-Moss <jacob@jacobian.org>2009-05-14 15:09:33 +0000
committerJacob Kaplan-Moss <jacob@jacobian.org>2009-05-14 15:09:33 +0000
commit3da371625272edb5af43446c32cbc7027223078d (patch)
tree2b4bdf9ae33247f6db02f30ef580321eb42c1a13 /django
parentd987b378ceaa546d43f42588564515aadb0c9233 (diff)
Fixed #10348: ChangeList no longer overwrites a select_related provided by `ModelAdmin.queryset()`.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10782 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/views/main.py28
1 files changed, 15 insertions, 13 deletions
diff --git a/django/contrib/admin/views/main.py b/django/contrib/admin/views/main.py
index 98e5b9f6d1..df0fd9fab4 100644
--- a/django/contrib/admin/views/main.py
+++ b/django/contrib/admin/views/main.py
@@ -197,19 +197,21 @@ class ChangeList(object):
raise IncorrectLookupParameters
# Use select_related() if one of the list_display options is a field
- # with a relationship.
- if self.list_select_related:
- qs = qs.select_related()
- else:
- for field_name in self.list_display:
- try:
- f = self.lookup_opts.get_field(field_name)
- except models.FieldDoesNotExist:
- pass
- else:
- if isinstance(f.rel, models.ManyToOneRel):
- qs = qs.select_related()
- break
+ # with a relationship and the provided queryset doesn't already have
+ # select_related defined.
+ if not qs.query.select_related:
+ if self.list_select_related:
+ qs = qs.select_related()
+ else:
+ for field_name in self.list_display:
+ try:
+ f = self.lookup_opts.get_field(field_name)
+ except models.FieldDoesNotExist:
+ pass
+ else:
+ if isinstance(f.rel, models.ManyToOneRel):
+ qs = qs.select_related()
+ break
# Set ordering.
if self.order_field: