У меня есть форма, в которой есть несколько необязательных фильтров: возраст, цвет глаз, знак зодиака и т.п. Если пользователь не стал указывать все это, фильтрации по указанному параметру не будет.
И вот тут проблема: эти поля необязательны не только для формы поиска, но и формы регистрации, то есть возможны анкеты с пустыми значениями.
Чтобы фильтровать по возрасту, я сделал так (знаю, что надо классовыми, но переписывать потом буду):
def new_services_search(request, name='', ages=['18_24', '24_35', '36_42', '43+', None]):
if request.method=='POST':
data = request.POST
name = data.get('name')
if data.get('age'):
age = list(data.getlist('age'))
filter_girls = Profile.objects.filter(available=True, name__istartswith=name,age__in=ages)
Суть думаю, понятна. Если пользователь указал диапазоны нужных возрастов, то фильтруем по ним, если нет, фильтруем по списку из шапки функции. Вот только анкеты с пустыми значениями не проходят, хотя None в списке есть, и проверка проблемного профиля в shell командой вроде test.age==None показала, что таки True. А вот во вьюхе становится "не тру".
Что делать?