我正在尝试创建一个视图,该视图将接受任意数量的搜索项,并使用这些项过滤特定对象。
我在想的是,网址将具有类似于以下内容的模式:/[property]=[value]/[property]=[value]/...
此模式可以在用户需要的时间内继续。然后,我可以通过执行以下操作来解析此问题:search=match.split('/')
。然后我将遍历搜索中的每个项目,其中包括:
results=myObject.objects.all()
for item in search:
items=item.split('=')
results=results.filter(items[0]=items[1])
不幸的是,我被告知关键字不能是表达式。有没有办法让关键字成为变量?感谢
答案 0 :(得分:0)
您可以将关键字参数预构建为字典,并使用**
语法传递它。
>>> items = ['a','b','c']
>>> def print_kwargs(**kwargs):
... for key,value in kwargs.iteritems():
... print "%s = %s" % (key, value)
...
>>> d = {items[0] : items[1]}
>>> print_kwargs(**d)
a = b
对于你的例子:
d = {}
for item in search:
items = item.split('=')
d[items[0]] = items[1]
results = results.filter(**d)