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

What is the difference between using __exact and Exact()?

我正在使用 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())

这两个有什么区别?

SQ inherits from django's Q object and will be using djangos exact 字段查找。

Exact 是干草堆 class 做自己的事。 (但很可能以同一个查询结束)

The docs 声明它们是等价的,所以你使用哪个没有太大区别。