Add MultiSelectRelatedOnlyFilter

django-5.0
Clement Sauvage 2021-08-02 23:21:44 +02:00 committed by Thomas Leichtfuß
parent 2062f0a381
commit 8369051e14
1 changed files with 13 additions and 0 deletions

View File

@ -190,6 +190,19 @@ class MultiSelectRelatedFilter(MultiSelectMixin, admin.RelatedFieldListFilter):
}
class MultiSelectRelatedOnlyFilter(MultiSelectRelatedFilter):
def field_choices(self, field, request, model_admin):
pk_qs = (
model_admin.get_queryset(request)
.distinct()
.values_list("%s__pk" % self.field_path, flat=True)
)
ordering = self.field_admin_ordering(field, request, model_admin)
return field.get_choices(
include_blank=False, limit_choices_to={"pk__in": pk_qs}, ordering=ordering
)
class MultiSelectDropdownFilter(MultiSelectFilter):
"""
Multi select dropdown filter for all kind of fields.