我遇到了这篇博客文章,它描述了一种使用列表理解技术处理从 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)]
非常感谢...这是一个很棒的社区。