zoukankan      html  css  js  c++  java
  • djangofilter 实现过滤时查询是否包含在数组的方法,in数组的实现

    from django_filters import BaseInFilter,NumberFilter
    
    class NumberInFilter(BaseInFilter, NumberFilter):
        pass
    
    class OrderFilter(django_filters.FilterSet):
        code = django_filters.CharFilter(field_name='code', lookup_expr='icontains')
        status = NumberInFilter(field_name='status',lookup_expr='in')
        type = NumberInFilter(field_name='type',lookup_expr='in')
        start_time = django_filters.DateTimeFilter(field_name='create_time',lookup_expr='gte',help_text = '%Y-%m-%d %H:%M:%S')
        end_time = django_filters.DateTimeFilter(field_name='create_time',lookup_expr='lt')
        name = django_filters.CharFilter(field_name='name',lookup_expr='icontains')
        pu_id= django_filters.NumberFilter(field_name='pu_id',lookup_expr='exact')
        l_id= django_filters.NumberFilter(field_name='l_id',lookup_expr='exact')
        l_name = django_filters.CharFilter(field_name='l_id',method='get_l_id')
        pt_name = django_filters.CharFilter(field_name='pu_id',method='get_pt_name')
    
        def get_pt_name(self,queryset,name,value):
            pu_id = list(User.objects.filter(pt_name__icontains=value).values_list('id',flat=True))
            return queryset.filter(pu_id__in=pu_id)
    
        def get_l_id(self,queryset,name,value):
            l_id = list(Location.objects.filter(l_name__icontains=value).values_list('id',flat=True))
            return queryset.filter(l_id__in=l_id)
    
        class Meta:
            model = Order
            fields = ['code','status','type','start_time','end_time','name','pu_id','l_id','l_name','pt_name']
    

      

    https://django-filter.readthedocs.io/en/stable/ref/filters.html?highlight=BaseInFilter#baseinfilter

  • 相关阅读:
    名门暗战
    redis安装相关下载
    Git:git diff 命令详解
    【教程】Win7-64位安装OpenSSL详细过程
    Linux 下MQ的安装和配置亲测
    用命令创建MySQL数据库
    WebSphere MQ中的CCSID
    Netty:option和childOption参数设置说明
    BeanNameAware接口和BeanFactoryAware接口
    再理解tcp backlog
  • 原文地址:https://www.cnblogs.com/Lucifer77/p/15623293.html
Copyright © 2011-2022 走看看