peewee过滤器

peewee-generic-filters的Python项目详细描述


通用peewee筛选器。


快速启动

安装peewee过滤器:

$ pip3 install peewee_generic_filters
importpeeweeimportpeewee_filtersasfiltersclassProduct(peewee.Model):title=peewee.CharField()description=peewee.CharField(null=True)price=peewee.IntegerField()classFilter(filters.FilterSet):title=filters.Filter(operator="startswith")has_description=filters.MethodFilter("filter_description")price_min=filters.Filter(operator="ge")deffilter_description(self,query,value:bool,**kwargs):returnquery.where(Product.description.is_null(notvalue)|((Product.description!="")ifvalueelse(Product.description=="")))classMeta:model=ProductFilter({"title":"foo","has_description":True}).apply(Product)

也可以在不绑定具体模型的情况下创建FilterSet

classFilter(filters.FilterSet):title=filters.CharFilter(operator="startswith")has_description=filters.MethodFilter("filter_description")price_min=filters.NumberFilter(operator="ge")deffilter_description(self,query,value:bool,**kwargs):returnquery.where(Product.description.is_null(notvalue)|((Product.description!="")ifvalueelse(Product.description=="")))

在这种情况下,可以对多个类似的模型使用filterset。 但它比使用带有显式模型的filterset慢得多。

过滤器

charfilter

此筛选器执行简单的字符匹配,与CharFieldTextField一起使用。

数字过滤器

基于数值的过滤器,与IntegerFieldFloatFieldDecimalField一起使用。

日期时间筛选器

在日期和时间匹配。与DateTimeField一起使用。

时间过滤器

一次匹配。与TimeField一起使用。

日期筛选器

在某个日期匹配。默认情况下与DateField一起使用。

布尔滤波器

此筛选器匹配与BooleanField一起使用的TrueFalse布尔值。

uuidfilter

此筛选器与用于BinaryUUIDField的uuid匹配。

以下是适用于所有筛选器的参数:

字段名

筛选依据的模型字段的名称。 如果未提供此参数,则默认为FilterSet类的筛选器属性名。 字段名可以通过将相关部分与分隔符(.)连接来遍历关系。例如,产品的制造商名称。

说明

筛选器说明。默认为空字符串。

操作员

应在筛选器调用中执行的字段查找。 应为以下值之一:^{>},ltgtle,^{>},^{>},^{>},ilikeis_nullinnot_incontainsstartswithendswithregexp,^{>},^{>},regexp,^{>},^{>},lege,^{>>>>>}。 默认为eq

方法

仅适用于MethodFilter。 告诉筛选器如何处理queryset的参数。 它可以接受FilterSet上的可调用方法或方法名。 可调用的接收一个query,要筛选的模型字段的field_name,要筛选的value,以及context。 它应该返回经过筛选的查询。可调用的参数value应该有注释。

特殊过滤器

搜索筛选器

用于在多个字段中搜索。它接受一个附加参数:

字段 要搜索的字段列表。

偏移滤波器

为OFFSET子句指定值。

极限滤波器

指定LIMIT子句的值。

它接受两个附加参数:

默认值

LIMIT子句的默认值。 默认为100

<6>最大 极限条款最大值。 默认为None

订购过滤器

启用QuerySet排序。它接受两个用于构建排序选项的附加参数:

字段

是{parameter name:model field name}的映射。fields也可能只是字符串列表。在这种情况下,字段名只需加倍作为公开的参数名。

默认值

默认顺序。

搜索筛选器

启用QuerySet搜索。它接受一个附加参数:

字段

是{model field name:operator}的映射。fields也可能只是字符串列表。 在这种情况下,运算符是contains

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java修复XSS漏洞   引发异常的函数的Java字段初始化   属性名中带有变量的java调用bean属性   在Java中打印不可见字符的十六进制   Azure SDK for Java如何获取网络安全组状态?   带有Jython的python Eclipse不理解Java导入   java如何在一个大小为5的arraylist中存储5个不同arraylist的相同索引的值?   类公司中的java NullPointerException   hadoop将目录从本地系统复制到hdfs java代码   Java中带方法的多级枚举   执行进程时,java JavaFX不确定进度条   JPA中存在java外键约束问题,尽管存在“cascade all”   数字不应以0开头的数值的java正则表达式   java Beanio流处理xml平面文件中的内部元素列表   带struts2标记的字符串的java测试长度   java将用户输入的数字与随机生成的数字进行比较   java如何更改属性。store()分隔符符号从“=”到“:”?   java需要帮助获得2人游戏功能Tic Tac Toe   java应用程序在尝试创建AmazonSClient时崩溃