如何根据包含字段和值的列表过滤模型?
看看我有什么:
> bar = [(u'code__regex', u'^[^J]'), (u'active__exact', u'0'), (u'type__id__exact', u'E01')]
这些是我想用来过滤模型Foo的字段/值。
> #want to have this equivalent:
> Foo.objects.filter(bar)
谢谢!
2 个回答
3
你没有说明你想要用“与”(AND)还是“或”(OR)。如果你想用“与”,那么你可以简单地把那个列表转换成一个字典,然后传给过滤器:
Foo.objects.filter(**dict(bar))
8
Foo.objects.filter(**dict(bar))
这不是Django的问题,而是Python的问题。你想把关键字对作为关键字参数(kwargs)传递给过滤器。你的bar
作为一个关键字参数的集合是完美的,所以dict(bar)
把它转换成字典,而**
前缀告诉Python解析器,这个字典要被接收方当作关键字参数来理解。
Stack Overflow上的一篇文章 理解Python中的kwargs对此进行了更详细的讲解。