summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorAndrey Kuzmin <jack.cvr@gmail.com>2015-10-25 22:15:37 +0200
committerTim Graham <timograham@gmail.com>2015-11-12 19:50:54 -0500
commit815f4d206dfea41bdff167283c2cac43a71524ac (patch)
treeb48d53496c534c87139cb8d9f34d9670d7710a2f /django
parent7624fdb9f8ea4cbff407436606998f572898038b (diff)
Fixed #25606 -- Added support for "__" lookup in RelatedOnlyFieldList
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/filters.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/django/contrib/admin/filters.py b/django/contrib/admin/filters.py
index f7c520a43a..4216f2ea64 100644
--- a/django/contrib/admin/filters.py
+++ b/django/contrib/admin/filters.py
@@ -166,9 +166,9 @@ class RelatedFieldListFilter(FieldListFilter):
self.lookup_kwarg_isnull = '%s__isnull' % field_path
self.lookup_val = request.GET.get(self.lookup_kwarg)
self.lookup_val_isnull = request.GET.get(self.lookup_kwarg_isnull)
- self.lookup_choices = self.field_choices(field, request, model_admin)
super(RelatedFieldListFilter, self).__init__(
field, request, params, model, model_admin, field_path)
+ self.lookup_choices = self.field_choices(field, request, model_admin)
if hasattr(field, 'verbose_name'):
self.lookup_title = field.verbose_name
else:
@@ -412,5 +412,5 @@ FieldListFilter.register(lambda f: True, AllValuesFieldListFilter)
class RelatedOnlyFieldListFilter(RelatedFieldListFilter):
def field_choices(self, field, request, model_admin):
- limit_choices_to = {'pk__in': set(model_admin.get_queryset(request).values_list(field.name, flat=True))}
- return field.get_choices(include_blank=False, limit_choices_to=limit_choices_to)
+ pk_qs = model_admin.get_queryset(request).distinct().values_list('%s__pk' % self.field_path, flat=True)
+ return field.get_choices(include_blank=False, limit_choices_to={'pk__in': pk_qs})