如何使用包含字段和值的列表过滤模型?

时间:2011-08-25 22:23:26

标签: python django

看看我有什么:

> 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 个答案:

答案 0 :(得分:8)

Foo.objects.filter(**dict(bar))

这不是django问题,这是一个python问题。您希望将关键字对作为关键字参数(kwargs)传递给过滤器。您的bar 完美作为kwarg集,因此dict(bar)将其转换为字典,**前缀通知python解析器该字典是被接收者解释为关键字参数。

堆栈溢出条目Understanding kwargs in Python更详细地介绍了这一点。

答案 1 :(得分:3)

你没有在AND或OR中说明你是否想要它。如果AND正常,那么您只需将该列表转换为字典并将其传递给过滤器:

Foo.objects.filter(**dict(bar))