Я натолкнулся на эту запись в блоге , которая описывает элегантный способ обработки результатов, возвращаемых из ChoiceField в представление, используя технику понимания списка - тот, который устраняет пустые ключи / значения без всех промежуточных структур данных. Этот конкретный подход, похоже, не работает для MultipeChoiceFields. Есть ли подобный способ подойти к ним? (Если, например, поля спальни и ванных комнат в следующем примере возвращают несколько значений).
Код выглядит следующим образом:
if search_form.is_valid():
searchdict = search_form.cleaned_data
# It's easier to store a dict of the possible lookups we want, where
# the values are the keyword arguments for the actual query.
qdict = { 'city': 'city__icontains',
'zip_code': 'zip_code',
'property_type': 'property_type_code',
'county': 'county__icontains',
'minimum_price': 'sale_price__gte',
'maximum_price': 'sale_price__lte',
'bedrooms': 'bedrooms__gte',
'bathrooms': 'baths_total__gte'}
# Then we can do this all in one step instead of needing to call
# 'filter' and deal with intermediate data structures.
q_objs = [Q(**{qdict[k]: searchdict[k]}) for k in qdict.keys() if searchdict.get(k, None)]
Большое спасибо ... это потрясающее сообщество.