Django过滤器:传递和数组的OR语句?

时间:2014-02-16 23:58:00

标签: django

我想使用过滤器函数查询带有Django的集合。问题是我想传递给定列的可能值列表。

我知道我可以做到以下几点:

User.objects.filter(Q(username='whatever') | Q(username='whatever2') | (username='whatever3') | ..... )

但问题是我有一个可能的用户名列表。

到目前为止我所拥有的是:

users = []
for username in usernames:
    users.extend(User.objects.filter(username=username))

是否有更有效的方法来执行此操作(进行一次数据库查询而不是多次查询)?

1 个答案:

答案 0 :(得分:2)

您可以使用:

users = User.objects.filter(username__in=usernames)

请参阅https://docs.djangoproject.com/en/dev/ref/models/querysets/#in