import django_filters from django.utils.translation import gettext_lazy as _ from .models import Member class MemberFilter(django_filters.FilterSet): user__first_name = django_filters.CharFilter(field_name="user__first_name", label=_("First name"), lookup_expr="icontains") user__last_name = django_filters.CharFilter(field_name="user__last_name", label=_("Last name"), lookup_expr="icontains") license = django_filters.CharFilter(label=_("License"), lookup_expr="icontains") user__is_active = django_filters.TypedChoiceFilter( field_name="user__is_active", label=_("Active?"), initial="true", choices=( ("", "All users"), ("true", "Active users"), ("false", "Inactive users"), ), coerce=lambda x: x.lower() == "true", ) class Meta: model = Member fields = ["user__first_name", "user__last_name", "license", "user__is_active"]