drf 动态字段omit

This commit is contained in:
caoqianming 2022-01-24 15:48:25 +08:00
parent ceb0fe2354
commit f6a7ada99f
2 changed files with 12 additions and 2 deletions

View File

@ -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

View File

@ -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):
"""