【发布时间】:2019-03-28 01:14:01
【问题描述】:
我正在尝试通过传递文本查询来过滤模型,并检查是否有任何字段包含与给定文本查询完全或部分匹配的值。
假设我有一个名为Sample 的模型,其中包含字符字段["name", "state", "type"]。
假设模型对象之一的值为state 设置为"barely alive"
我查看了以下 django 文档中描述的方法: https://docs.djangoproject.com/en/2.1/ref/contrib/postgres/search/
我想使用"barely"、"arely" 或"barely alive" 中的任何一个作为文本查询来检索该对象。
我最初尝试过类似Sample.objects.annotate(search=SearchVector(*list_of_fields)).filter(search__icontains=query_text)
但是,如果我将全文barely alive 作为查询文本传递并且仅在传递诸如barely 或alive 之类的部分文本时,上述行将不会返回正确的查询集。
然后我尝试了
Sample.objects.annotate(search=SearchVector(*list_of_fields)).filter(search=query_text).filter(search__icontains=query_text)
但随后它返回一个空的查询集。
我在这里缺少什么?
【问题讨论】:
标签: python django postgresql