import django_filters from django.contrib.auth.models import User from generic.models import CidUser, Supervisor, UserGrades class CidUserFilter(django_filters.FilterSet): active = django_filters.BooleanFilter( field_name="active", label="CID active", initial=True ) class Meta: model = CidUser # fields = ("cid", "active", "internal_candidate", "group") fields = { "cid": ["contains"], "active": ["exact"], "internal_candidate": ["exact"], "group": ["exact"], "group__name": ["contains"], "email": ["contains"], } @property def qs(self): parent = super().qs # filter_active = getattr(self.request, 'active', True) if "active" not in self.request.GET: return parent.filter(active=True) return parent class UserUserFilter(django_filters.FilterSet): userprofile__grade = django_filters.ModelChoiceFilter(queryset=UserGrades.objects.all(),label="Grade") userprofile__supervisor = django_filters.ModelChoiceFilter(queryset=Supervisor.objects.all(), label="Supervisor") #has_supervisor = django_filters.BooleanFilter(field_name='supervisor', lookup_expr='isnull', exclude=True, label="Has Supervisor") class Meta: model = User # fields = ("cid", "active", "internal_candidate", "group") fields = { "first_name": ["contains"], "last_name": ["contains"], #"active": ["exact"], #"group": ["exact"], #"group__name": ["contains"], #"userprofile__grade": ["exact"], #"userprofile__supervisor": ["exact"], "email": ["contains"], } @property def qs(self): parent = super().qs ## filter_active = getattr(self.request, 'active', True) #if "active" not in self.request.GET: # return parent.filter(active=True) return parent