任意数量的搜索词

时间:2013-07-10 13:48:13

标签: python regex django filter

我正在尝试创建一个视图,该视图将接受任意数量的搜索项,并使用这些项过滤特定对象。

我在想的是,网​​址将具有类似于以下内容的模式:/[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])

不幸的是,我被告知关键字不能是表达式。有没有办法让关键字成为变量?感谢

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)