diff --git a/hb_server/apps/system/filters.py b/hb_server/apps/system/filters.py index 4199790..0702953 100644 --- a/hb_server/apps/system/filters.py +++ b/hb_server/apps/system/filters.py @@ -3,9 +3,11 @@ from .models import User class UserFilter(filters.FilterSet): + name = filters.CharFilter(field_name='name', lookup_expr='contains') + fields = filters.CharFilter(method='filter_fields') class Meta: model = User - fields = { - 'name': ['exact', 'contains'], - 'is_active': ['exact'], - } + fields = ['name', 'is_active', 'fields'] + + def filter_fields(self, queryset, name, value): + return queryset \ No newline at end of file diff --git a/hb_server/apps/system/serializers.py b/hb_server/apps/system/serializers.py index 8d644b3..d74c8a2 100644 --- a/hb_server/apps/system/serializers.py +++ b/hb_server/apps/system/serializers.py @@ -5,6 +5,7 @@ from rest_framework import serializers from .models import (Dict, DictType, File, Organization, Permission, Position, Role, User) +from utils.mixins import DynamicFieldsMixin class IntervalSerializer(serializers.ModelSerializer): class Meta: @@ -132,7 +133,7 @@ class UserSimpleSerializer(serializers.ModelSerializer): # fields = ['id', 'username', 'name', 'is_active', 'dept_name', 'dept'] -class UserListSerializer(serializers.ModelSerializer): +class UserListSerializer(DynamicFieldsMixin, serializers.ModelSerializer): """ 用户列表序列化 """ diff --git a/hb_server/utils/mixins.py b/hb_server/utils/mixins.py index b0ccb80..f3538d0 100644 --- a/hb_server/utils/mixins.py +++ b/hb_server/utils/mixins.py @@ -1,9 +1,9 @@ """ Mixin to dynamically select only a subset of fields per DRF resource. """ -import warnings +# import warnings -from django.conf import settings +# from django.conf import settings class DynamicFieldsMixin(object): @@ -36,10 +36,10 @@ class DynamicFieldsMixin(object): try: request = self.context['request'] except KeyError: - conf = getattr(settings, 'DRF_DYNAMIC_FIELDS', {}) - if not conf.get('SUPPRESS_CONTEXT_WARNING', False) is True: - warnings.warn('Context does not have access to request. ' - 'See README for more information.') + # conf = getattr(settings, 'DRF_DYNAMIC_FIELDS', {}) + # if not conf.get('SUPPRESS_CONTEXT_WARNING', False) is True: + # warnings.warn('Context does not have access to request. ' + # 'See README for more information.') return fields # NOTE: drf test framework builds a request object where the query @@ -47,8 +47,8 @@ class DynamicFieldsMixin(object): params = getattr( request, 'query_params', getattr(request, 'GET', None) ) - if params is None: - warnings.warn('Request object does not contain query paramters') + # if params is None: + # warnings.warn('Request object does not contain query paramters') try: filter_fields = params.get('fields', None).split(',')