Bar*_*tek 4 django orm django-q
我正在寻找创建一个稍微复杂的查询,使用原始SQL很容易编写.以下是raw中查询的示例:
SELECT my,fields FROM sales WHERE is_paid = False OR status ='toship'AND otherfield ='FOO'AND another ='BAR'
这很简单,它生成所有结果为is_paid = False,然后为我的AND匹配生成第二个结果集.
现在我知道了Q对象,我知道有关过滤但是我似乎无法完全理解如何在Django ORM中实现这一目标.
有小费吗?
谢谢
tar*_*ueh 23
您可以以某种动态的方式继续构建Q对象.
例:
query1 = Q(is_paid=False)
query2 = Q()
if status:
query2 = Q(status=status)
if otherfield:
query2 = query2 & Q(otherfield=otherfield)
if anotherfield:
query2 = query2 & Q(anotherfield=anotherfield)
query = query1 | query2
result = model.objects.filter(query)
Run Code Online (Sandbox Code Playgroud)
Dan*_*man 13
虽然googletorp是正确的,你不能用字符串动态构造查询,你可以使用字典参数.就像是:
model.objects.filter(Q(**mydict1) | Q(**mydict2))
Run Code Online (Sandbox Code Playgroud)
其中mydict1和2的形式如下:
{'field1': 'value1'}
{'field2__icontains': 'value2'}
Run Code Online (Sandbox Code Playgroud)
等等
| 归档时间: |
|
| 查看次数: |
8704 次 |
| 最近记录: |