Django 自定义查询集过滤器
在 Django 中,是否有一种标准方法可以为查询集编写复杂的自定义过滤器?
正如我可以写的那样,
MyClass.objects.all().filter(field=val)
我想做这样的事情:
MyClass.objects.all().filter(customFilter)
我可以使用生成器表达式
(x for x in MyClass.objects.all() if customFilter(x))
,但这会失去可链接性以及 QuerySet 提供的任何其他功能。
Is there, in Django, a standard way to write complex, custom filters for QuerySets?
Just as I can write
MyClass.objects.all().filter(field=val)
I'd like to do something like this :
MyClass.objects.all().filter(customFilter)
I could use a generator expression
(x for x in MyClass.objects.all() if customFilter(x))
but that would lose the chainability and whatever other functions the QuerySets provide.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
开始使用管理器方法的建议是一个很好的方法,但是为了更直接地回答您的问题:是的,使用 Q 对象。 例如:
Q 对象可以与 | 组合 (或),& (和),和〜(非)。
The recommendation to start using manager methods is a good one, but to answer your question more directly: yes, use Q objects. For example:
Q objects can be combined with | (OR), & (AND), and ~ (NOT).
我认为您可能需要自定义经理。
I think you may need custom managers.