当前位置:  开发笔记 > 编程语言 > 正文

Django自定义查询集过滤器

如何解决《Django自定义查询集过滤器》经验,为你挑选了2个好方法。

在Django中,是否有为QuerySet编写复杂的自定义过滤器的标准方法?

正如我可以写的那样

MyClass.objects.all().filter(field=val)

我想做这样的事情:

MyClass.objects.all().filter(customFilter)

我可以使用生成器表达式

(x for x in MyClass.objects.all() if customFilter(x))

但这会失去可链接性以及QuerySets提供的任何其他功能.



1> Carl Meyer..:

开始使用管理器方法的建议很好,但更直接地回答您的问题:是的,使用Q对象.例如:

from django.db.models import Q

complexQuery = Q(name__startswith='Xa') | ~Q(birthdate__year=2000)

MyModel.objects.filter(complexQuery)

Q对象可以与|组合 (OR),&(AND)和〜(NOT).



2> Vasil..:

我想你可能需要定制经理.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有