python - Django 自定义查询集过滤器

标签 python django django-queryset generator-expression

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

如我所愿

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

我想做这样的事情:

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

我可以使用生成器表达式

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

但这会失去可链接性和 QuerySet 提供的任何其他功能。

最佳答案

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

from django.db.models import Q

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

MyModel.objects.filter(complexQuery)

Q对象可以与|组合(OR)、& (AND) 和 ~ (NOT)。

关于python - Django 自定义查询集过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/672182/

相关文章:

python - django value_list 给出 id 而不是值

python - 在 Python 中使用邻接表构建节点图

python - 寻找 pickle 数据

javascript - 按钮更新第一个元素的文本而不是所选元素

python - Django 按组保留一个元素,然后在此查询集上使用属性

python - 带有 LIMIT 的自定义 get_queryset for django 管理面板

python - Pandas 对现有索引进行重采样

python - 如何处理多个异常?

mysql - Django MySQL 全文搜索

python - Django:过滤由联合组成的查询集不起作用