2

我想做以下事情:

假设我有:

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”语句与具有动态 query_terms 列表的“AND”一起加入

4

1 回答 1

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

我可能没有完全正确地优化这个,但是沿着这些思路应该可以工作。

于 2012-08-29T19:14:18.890 回答