【问题标题】:Q-objects in DjangoDjango 中的 Q 对象
【发布时间】:2015-04-13 10:49:50
【问题描述】:
如何通过过滤器获得的 var 值进行选择,然后在循环中附加一个值?
items = Item.objects.filter(Q(var__icontains=term) | Q(another_var__icontains=term))
res = []
for item in items:
res.append({
'val': item.(var or another_var?),
})
【问题讨论】:
标签:
python
django
django-queryset
django-q
【解决方案1】:
恐怕您必须手动检查var/anohter_var才能找到查询集中匹配的变量。
items = Item.objects.filter(Q(var__icontains=term) |
Q(another_var__icontains=term))
uterm = term.upper()
res = []
for item in items:
value = item.var if uterm in item.var.upper() else item.another_var
res.append({'val': value})
【解决方案2】:
在本地检查,或执行两个不同的查询。
第一个选项:
items = Item.objects.filter(Q(var__icontains=term) | Q(another_var__icontains=term))
res = []
for item in items:
if term.lower() in item.var.lower():
v = item.var
else:
v = item.another_var
res.append({
'val': v,
})
第二个选项,只做两个查询(两个过滤器调用)。