I'm using Haystack for search, and the resulting SearchQuerySet returned contains None elements:
>> SearchQuerySet().models(Question, Document, Idea)
>> [<SearchResult: idea.idea (pk=3875)>, None, None, None]
Running rebuild_index doesn't help. If I remove the .models() call from the first line, the problem goes away. I could just filter out None elements from the results, but I wanted to know if this is intended behaviour?
I am using Django 1.4, Whoosh, and Haystack 2.0.0-beta
I had this problem when haystack index had records without corresponding records in DB.
No, it is definitly not the intended behaviour, and as I can see, seems to be related to a design decision in Whoosh. And, as of December 2015, this still seems to be an issue, as can be seen here. Also, I can reproduce it with my setup (django 1.8.5, haystack 2.4.1, Whoosh 2.7.0) - that's why I came here.
Quick and dirty solution that worked for me: Define a new field on your index (type/model/tomato), set it the same for each model, and filter against that value:
.filter(type='my_modelname')
instead of
.models(MyModel)
.
I don't know (yet) how this scales, but seems to work ok.
Had the same problem using Whoosh, installed Elasticsearch and the None
elements went away.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With