在django查询中连接过滤器

fce*_*uti 1 python django

我想做以下事情:

让我说我有:

query_terms = ["A", "B"]
Run Code Online (Sandbox Code Playgroud)

需要的是以下查询:

House.objects.filter(
    Q(name__icontains="A") | Q(building__name__icontains="A",
    Q(name__icontains="B") | Q(building__name__icontains="B"
)
Run Code Online (Sandbox Code Playgroud)

我不知道如何将这个"OR"语句与带有动态query_terms列表的"AND"一起加入

Col*_*ady 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
Run Code Online (Sandbox Code Playgroud)

我可能没有完全正确地优化这个,但沿着这些方向的东西应该有效.