Даже если и нагородить так, в одном запросе могут быть повторы этих параметров (из-за чекбоксов). Как мне их тоже захватить? Ведь если GET -- это подобие словаря, то из всех пар "ключ-значение" остаётся только последняя.
if request.GET.get('min_price'):
list_of_drives = list_of_drives.filter(price__gte=request.GET.get('min_price'))
if request.GET.get('max_price'):
list_of_drives = list_of_drives.filter(price__lte=request.GET.get('max_price'))
if request.GET.get('manufacturer'):
list_of_drives = list_of_drives.filter(manufacturer=request.GET.get('manufacturer'))
if request.GET.get('kind'):
list_of_drives = list_of_drives.filter(kind=request.GET.get('kind'))
if request.GET.get('min_mem'):
list_of_drives = list_of_drives.filter(price__gte=request.GET.get('min_mem'))
if request.GET.get('max_mem'):
list_of_drives = list_of_drives.filter(price__lte=request.GET.get('max_mem'))
if request.GET.get('interface'):
list_of_drives = list_of_drives.filter(interface=request.GET.get('interface'))
if request.GET.get('ff'):
list_of_drives = list_of_drives.filter(price__gte=request.GET.get('ff'))
Попробовал сделать форму, основанную на модели. Пока не допёр как с ней работать. Документация то и дело отправляет с ссылки на ссылку, запутанно.
class FilterForm(ModelForm):
min_price = IntegerField(label='от', min_value=0)
max_price = IntegerField(label='до', min_value=0)
min_mem = IntegerField(label='от', min_value=0)
max_mem = IntegerField(label='до', min_value=0)
class Meta:
model = Drive
fields = ['manufacturer', 'kind', 'interface', 'ff']
widgets = {
'manufacturer': CheckboxInput,
'kind': CheckboxInput,
'interface': CheckboxInput,
'ff': CheckboxInput
}
Что мне нужно: http://prntscr.com/9aauar
Чекбоксы я выводил по типу во view:
list_of_manufacturers = Drive.objects.values('manufacturer').distinct()
в шаблоне:
{% for drive in manufacturers %}
<input type="checkbox" name="manufacturer" id="manufacturer{{ forloop.counter }}" value="{{ drive.manufacturer }}" />
<label for="manufacturer{{ forloop.counter }}">{{ drive.manufacturer }}</label><br />
{% endfor %}
Так и надо, или как-то по-другому такие значения добываются?
Updated 4 Dec. 2015, 20:09 by Gambit.