diff options
| author | Jacob Kaplan-Moss <jacob@jacobian.org> | 2009-05-14 15:09:33 +0000 |
|---|---|---|
| committer | Jacob Kaplan-Moss <jacob@jacobian.org> | 2009-05-14 15:09:33 +0000 |
| commit | 3da371625272edb5af43446c32cbc7027223078d (patch) | |
| tree | 2b4bdf9ae33247f6db02f30ef580321eb42c1a13 /django | |
| parent | d987b378ceaa546d43f42588564515aadb0c9233 (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.py | 28 |
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: |
