在Djang中使用Q()动态构建复杂查询

2024-06-07 08:58:52 发布

您现在位置:Python中文网/ 问答频道 /正文

First example:

# ANDing Q objects
q_object = Q()
q_object.add(Q(), Q.AND)

# ORing Q objects
q_object = Q()
q_object.add(Q(), Q.OR)

Second example:

^{pr2}$

这项技术可能非常有用,例如在eBay上为带有条件过滤器的页面构建查询。在

但是这些事情,我知道-没有文档记录,那么对于这件事有什么最佳实践,这些实践不会从支持中删除,也不会让阅读我代码的人感到困惑?在

ps
还有-在Q()对象中使用“&;”运算符是否是一个好的解决方案?在Django docs我什么也没发现!在


Tags: orandadd过滤器objectsobjectexample条件
2条回答

检查the doc
可以使用&operator.and_来表示'AND',或者更短:

>>> mylist = [Q(question__contains='dinner'), Q(question__contains='meal')]
# AND
>>> Poll.objects.filter(reduce(operator.and_, mylist))
# could be 
>>> Poll.objects.filter(*mylist)

qusage是一个文档化的特性,是一个公共的djangoapi。这意味着它是稳定的,根据Django向后兼容性策略,它不会消失。在

https://docs.djangoproject.com/en/dev/topics/db/queries/#complex-lookups-with-q-objects

相关问题 更多 >

    热门问题