繁体   English   中英

将Django Q对象查找合并到一个过滤器中

[英]Combining Django Q Object Lookups into One Filter

我在Q对象查找方面遇到问题,而当用户搜索多个术语时,除非所有术语都在同一个对象中,否则搜索不会返回任何内容。

如果您访问https://www.soledadmemorial.com/plaques并搜索David S Hackley则搜索将不会返回任何内容,但如果仅搜索David S则会得到结果。

我试图组合过滤器,如(Q(first_name__icontains=query), Q(last_name__icontains=query))但只是收到一个错误。 下面是我当前的代码。 无需组合多个对象的搜索即可实现。

...
if query:
   queryset_list = queryset_list.filter(
     Q(first_name__icontains=query) |
     Q(last_name__icontains=query) |
     Q(branch__icontains=query) |
     Q(rank__icontains=query) |
     Q(group__group_name__icontains=query) |
     Q(veteran__name__icontains=query)
).distinct()
...

icontains被翻译成数据库

ILIKE '%query_text%'

当您搜索David S时,它将找到它作为first_name。

你没有

ILIKE '%David S Hackley%' 

就像您数据库中的任何列一样,icontains在这里不会这样做。

您应该考虑使用SearchVector (postgres)甚至是haystack

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM