在 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/