使用__exact和Exact()有什么区别?

时间:2016-05-25 14:19:06

标签: django solr django-haystack searchqueryset

我正在使用Solr搜索使用Haystack的Django应用程序。为了获得更精确的结果,我不得不更改搜索查询以执行精确搜索 -

from haystack.query import SearchQuerySet, SQ
from haystack.inputs import Exact

....
query = SQ(tags_indexed=Exact(val.lower()))
sqs = SearchQuerySet().models(
                    SampleModel).filter(query)
...

现在,您可以通过其他方式进行某些文档中提到的精确搜索 -

query = SQ(tags_indexed__exact=val.lower())

这两者有什么区别?

1 个答案:

答案 0 :(得分:1)

SQ继承自django的Q对象,并将使用djangos exact字段查找。

Exact是一个干草堆类,可以自己做。 (但很可能最终会出现在同一个查询中)

The docs声明它们是等效的,所以它并没有太大的区别。