[Fixed]-How can I filter a Haystack SearchQuerySet for None on an IntegerField

13👍

I feel this question was not answered. It seems the op was asking how to filter for null entries using haystack.query.SearchQuerySet with an ElasticSearch backend.

In the example above, replace

self.searchqueryset.filter(group__isnull=True)

with

self.searchqueryset.filter(_missing_='group')

Not intuitive, but its the only way I have gotten this to work so far.

14👍

If you are using ElasticSearch, the solution can be done without patching, just using native ElasticSearch:

from haystack.inputs import Raw
self.searchqueryset.exclude(group = Raw("[* TO *]"))

Other way around, filter all documents that have non-emtpy group field:

from haystack.inputs import Raw
self.searchqueryset.filter(group = Raw("[* TO *]"))

This could work for SOLR too and for other Haystack backends applying the same concept but with specific syntax of the backend search language.

References:

3👍

If you’re using SOLR, you’d probably like to have a look at the following links:

1) https://github.com/toastdriven/django-haystack/commit/9332a91a7f0e4b33d7e20aa892d156305c12dfe3
2) https://github.com/toastdriven/django-haystack/issues/163

There’s a patch for SOLR, allowing such queries, but for other backends there’s probably none.

Leave a comment