【发布时间】:2017-08-27 12:43:18
【问题描述】:
我正在 Django 上创建一个搜索页面,并希望生成一个动态查询集。
我有一个这样初始化的字符串过滤器列表:
filter_names = ('filter1', 'filter2')
然后,我想在我的 filter_names 列表中循环,并为请求中的每个过滤器创建一个 Q 对象列表(在 filter_names 中具有相同的名称)。我正在创建这样的 Q 列表:
filter_clauses = [Q(filter=request.GET.get(filter))
for filter in filter_names
if request.GET.get(filter)]
问题在于结果列表 (filter_clauses) 类似于:
Q(filter=value1),
Q(filter=value2)
但我实际上想要一个类似的列表:
Q(filter1=value1),
Q(filter2=value2)
实际上,循环并没有捕获变量过滤器的值,而是将其解释为“过滤器”。
那么,我在循环中做错了吗?
有关更多信息,我从answer 中获得了这个想法,我收到了这个错误:
无法将关键字“过滤器”解析为字段。
这意味着,框架正在搜索的模型中搜索名为“filter”的字段,但显然没有找到。
【问题讨论】:
标签: python django list foreach request