[英]Django Custom Queryset filters
在 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 对象。 例如:
from django.db.models import Q
complexQuery = Q(name__startswith='Xa') | ~Q(birthdate__year=2000)
MyModel.objects.filter(complexQuery)
Q 对象可以与 | (OR)、& (AND) 和 ~ (NOT)。
我认为您可能需要自定义管理器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.