search

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Люди, вот если я делаю поиск по моделе например
http://dumpz.org/1377/
как мне сделать так что бы если поле в форме заполнили то оно становится обязательным при поиске, а если нет то пох типа.
Обычно я делаю так
resultes = Problem.objects.filter(client__name__icontains=name, type__id__icontains=type)
смысл в том что если name оставили пустым то client__name__icontains="" совпадёт со всеми записями. Но это было со стрингами.. А щас у меня всю форму выбирают из ModelChoiceField, там у меня уже объекты, может быть с ними проделать такое можно менее геморойным способом?
(2:07:16 PM) _lorien: * по модели
(2:08:02 PM) hrundelok: _lorien: а если не заполнили поле, оно скажет что модель не совпала
(2:09:02 PM) Муркт: if form['technician']: kwargs['technician'] = form['technician
(2:09:40 PM) _lorien: hrundelok, я обычно делаю метод search, в который передаю QuerySet и его уже по вкусу фильтрую
(2:10:12 PM) _lorien: def filter(self, qs):
if self.cleaned_data['huis']:
return qs.filter(name=self.cleaned_data['huis'])
тип того
(2:10:23 PM) Большой Лис: select ... where ilike
тфу мля
(2:11:04 PM) _lorien: в результате во view имеем:
items = Item.objects.all()
form = SomeForm(request.POST)
if form.is_valid():
items = form.filter(items)
(2:11:19 PM) _lorien: * form.search