django过滤器

qfilters的Python项目详细描述


_它是什么:django的一个轻量级包,用于过滤django查询集。中心对象-a filter-是一个可调用的对象,它接受一个queryset作为参数并返回一个queryset:


filtered\u queryset=filter(model.objects.all())


使用`qfilters`,在最常见的情况下,它只是Q对象的包装但是,有2个功能可能是使用该软件包的原因:

u1。支持其他筛选器类型。例如,有一个从字段列表构造的“valuesDictFilter”,它将传递给“querySet.values”,并检索字典列表,还有一个接受dict作为参数的筛选函数。

这样做,使用多个筛选器将导致对“queryset.values”的一次调用。

FrasdStList=([TrutsSy-GoothHunter)] < Br/>返回Obj[[ TrutsSy-GoodHunter’]是假名词,因为它可以是没有BR/> Bo./>猫= NasyIZZDESNEPROHOHOKOMYAT(自我,CassPrices,Objor,A.)(< BR/>断言猫)。(BR/> BR/>也有类似的变体('qFrase.ExoCixType类型))` QuerySetTimeHook`,它在遍历QuerySet时将属性附加到对象。另一个是“PropertyBasedFilter”,它可以访问对象的属性甚至属性,就像它是一个普通的django模型对象一样实现不是很简单,但迄今为止它已经通过了测试这就是它的样子:


Class Catsbreed(models.model):

traits=models.onetoonefield('traits')

空=真)
#如果不能指定min和max
weight=models.FloatField(u'bérec,кГ,null=True)


@属性
def kg(self):
返回self.weight或self.weight_max



从qfilters导入属性basedfilter

@PropertyBasedFilter('@',
FieldSistList= [ TrutsSy-Fug’,'TrutsSmithWeithMax′],
DEF Listar猫(OBR):
返回不Obj.Tr.kg或Obj.Trim.K.lt;3<BR/><断言轻猫(CassPrices,Objor,A.))。使用类作为容器:方法是过滤器,有一个可以保存某些上下文(例如视图本身)的对象,
,让方法成为过滤器,并且能够访问此上下文,这很方便` qfilters.containers提供此功能,具体来说,有一个“methodfilter”类:


@生成过滤器(propertybasedfilter,
字段列表=['traits\uu weight','traits\uu weight\u max',
属性=['traits.kg'])
def filter\uu big(self,cat):
返回cat.traits.kg和cat.traits.kg>;5

def filter\uu q\u另一个(self):
return q(名称in=[u'men'pre'predu]ngo rest framework)(http://www.django-rest-framework.org/)。每个视图都知道过滤器后端(类)的概念。首先,我实现了一个简单的基于方法的过滤器后端,这些方法的可能返回值是一个q对象或一个queryset。但是我在调试时遇到了困难,因为返回值甚至不知道它来自哪个方法因此,我决定使用这个过滤器对象是一个好主意。

p.s.`qfilters`不提供用于django rest框架的过滤器后端,但是编写一个过滤器是小菜一碟。

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

推荐PyPI第三方库


热门话题
persistence Berkeley DB(Java版)在应用程序运行之间不是持久的   java使调度方法线程安全   java有更好的(java8?)收集异常的“原因堆栈”的方法?   java帮助我找到错误:方法声明无效;需要返回类型   java如何自动删除子实体?   sql Hibernate使用Java List实现多对多双向映射   java创建一组需要帮助的对象   目标c将Java程序绑定到Cocoa接口   多线程Java:同步操作与波动性到底有什么关系?   Java Slick2d如何将鼠标坐标转换为世界坐标   java内存泄漏。mysql。jdbc。ConnectionPropertiesImpl$*任意*ConnectionProperty   将java代码从hbase 0.92迁移到0.98.0hadoop2