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

135 Views Asked by At

I am using Solr search for Django application using Haystack. In order to get more precise result, I had to change the search query to perform exact search -

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

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

Now, other way you can do the exact search as mentioned in some documentation is -

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

What is the difference between these two?

1

There are 1 best solutions below

1
Sayse On BEST ANSWER

SQ inherits from django's Q object and will be using djangos exact field lookup.

Exact is a Haystack class that does its own thing. (but most likely ends up at the same query)

The docs state that they are equivalent so it doesn't make much of a difference which you use.