filters.py 998 B

123456789101112131415161718192021222324252627282930313233343536
  1. import django_filters
  2. from django.db.models import Q
  3. from extras.filters import CustomFieldFilterSet
  4. from utilities.filters import NullableModelMultipleChoiceFilter
  5. from .models import Tenant, TenantGroup
  6. class TenantFilter(CustomFieldFilterSet, django_filters.FilterSet):
  7. q = django_filters.MethodFilter(
  8. action='search',
  9. label='Search',
  10. )
  11. group_id = NullableModelMultipleChoiceFilter(
  12. name='group',
  13. queryset=TenantGroup.objects.all(),
  14. label='Group (ID)',
  15. )
  16. group = NullableModelMultipleChoiceFilter(
  17. name='group',
  18. queryset=TenantGroup.objects.all(),
  19. to_field_name='slug',
  20. label='Group (slug)',
  21. )
  22. class Meta:
  23. model = Tenant
  24. fields = ['q', 'group_id', 'group', 'name']
  25. def search(self, queryset, value):
  26. return queryset.filter(
  27. Q(name__icontains=value) |
  28. Q(description__icontains=value) |
  29. Q(comments__icontains=value)
  30. )