diff --git a/hb_server/apps/system/filters.py b/hb_server/apps/system/filters.py index 0702953..2aa0dba 100644 --- a/hb_server/apps/system/filters.py +++ b/hb_server/apps/system/filters.py @@ -1,13 +1,19 @@ from django_filters import rest_framework as filters from .models import User +from utils.mixins import DynamicFieldsFilterMixin -class UserFilter(filters.FilterSet): +class UserFilter(DynamicFieldsFilterMixin, filters.FilterSet): name = filters.CharFilter(field_name='name', lookup_expr='contains') fields = filters.CharFilter(method='filter_fields') + omit = filters.CharFilter(method='filter_omit') class Meta: model = User fields = ['name', 'is_active', 'fields'] def filter_fields(self, queryset, name, value): + return queryset + + + def filter_omit(self, queryset, name, value): return queryset \ No newline at end of file diff --git a/hb_server/utils/mixins.py b/hb_server/utils/mixins.py index f3538d0..7a37a3c 100644 --- a/hb_server/utils/mixins.py +++ b/hb_server/utils/mixins.py @@ -2,9 +2,13 @@ Mixin to dynamically select only a subset of fields per DRF resource. """ # import warnings +from django_filters import rest_framework as filters # from django.conf import settings - +class DynamicFieldsFilterMixin(object): + fields = filters.CharFilter(method='filter_fields') + def filter_fields(self, queryset, name, value): + return queryset class DynamicFieldsMixin(object): """