0

我正在尝试创建一个包含任意数量搜索词的视图,并使用这些词过滤特定对象。

我在想的是,url 将有一个看起来像下面这样的模式:/[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])

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

4

1 回答 1

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)
于 2013-07-10T13:56:11.790 回答