2015-02-12 2 views
0

Как я могу выбрать, какое значение var, которое я получаю по фильтру, чтобы затем добавить значение в цикле?Q-объекты в Django

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?), 
    }) 

ответ

0

Я боюсь, что вы должны проверить var/anohter_var вручную, чтобы найти, какая переменная соответствует в QuerySet.

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}) 
0

Проверьте его локально или выполните два разных запроса. Первый вариант:

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, 
    }) 

Второй вариант, просто сделать два запроса (два фильтра вызовов).