From f6a7ada99fccac748db1e2efa4f9fa3f8a68ec11 Mon Sep 17 00:00:00 2001 From: caoqianming Date: Mon, 24 Jan 2022 15:48:25 +0800 Subject: [PATCH] =?UTF-8?q?drf=20=E5=8A=A8=E6=80=81=E5=AD=97=E6=AE=B5omit?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hb_server/apps/system/filters.py | 8 +++++++- hb_server/utils/mixins.py | 6 +++++- 2 files changed, 12 insertions(+), 2 deletions(-) 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): """