在django查询中连接过滤器

时间:2012-08-29 19:09:55

标签: python django

我想做以下事情:

我想说:

query_terms = ["A", "B"]

需要的是以下查询:

House.objects.filter(
    Q(name__icontains="A") | Q(building__name__icontains="A",
    Q(name__icontains="B") | Q(building__name__icontains="B"
)

我不知道如何将这个“OR”语句与“AND”一起加入动态query_terms列表

1 个答案:

答案 0 :(得分:5)

full_query = None
for query in query_terms:
    q = Q(name__icontains=query) | Q(building__name__icontains=query)
    if full_query is None:
        full_query = q
    else:
        full_query = full_query & q

我可能没有完全正确地对此进行优化,但这些方面的内容应该有效。