view
class ScriptViews(ModelViewSet):
logger = logging.getLogger("devops")
queryset = Script.objects.filter(is_delete=0)
serializer_class = ScriptSerializer
pagination_class = MyPageNumberPagination
filter_backends = (DjangoFilterBackend,) # 只适用于此接口,局部过滤
filterset_class = ScriptFilter
filter
from django_filters import rest_framework as filters
class ScriptFilter(filters.FilterSet):
# 根据名称过滤忽略大小写
name = filters.CharFilter(field_name='name', lookup_expr='icontains')
class Meta:
model = Script
fields = ('name',) # 允许精确查询的字段
search_fields = ('name',) # 允许模糊查询的字段
lookup_expr:
__exact 精确等于 like ‘aaa’
__iexact 精确等于 忽略大小写 ilike ‘aaa’
__contains 包含 like ‘%aaa%’
__icontains 包含 忽略大小写 ilike ‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。
__gt 大于
__gte 大于等于
__lt 小于
__lte 小于等于
__in 存在于一个list范围内
__startswith 以…开头
__istartswith 以…开头 忽略大小写
__endswith 以…结尾
__iendswith 以…结尾,忽略大小写
__range 在…范围内
__year 日期字段的年份
__month 日期字段的月份
__day 日期字段的日
__isnull=True/False