Haystack查询集包含None元素

时间:2012-05-04 18:38:29

标签: django-haystack

我正在使用Haystack进行搜索,返回的结果是SearchQuerySet包含None元素:

>> SearchQuerySet().models(Question, Document, Idea)
>> [<SearchResult: idea.idea (pk=3875)>, None, None, None]

运行rebuild_index没有帮助。如果我从第一行删除.models()调用,问题就会消失。我可以从结果中筛选出无元素,但我想知道这是否是预期的行为?

我正在使用Django 1.4,Whoosh和Haystack 2.0.0-beta

3 个答案:

答案 0 :(得分:4)

当haystack索引在DB中没有相应记录的记录时,我遇到了这个问题。

答案 1 :(得分:3)

不,这绝对不是预期的行为,正如我所看到的,似乎与飞快移动中的设计决定有关。而且,截至2015年12月,这仍然是一个问题,可以看出here。另外,我可以用我的设置(django 1.8.5,haystack 2.4.1,Whoosh 2.7.0)重现它 - 这就是我来这里的原因。

对我有用的快速而肮脏的解决方案:在索引上定义一个新字段(类型/型号/番茄),为每个模型设置相同的字段,并根据该值进行过滤:

.filter(type='my_modelname')

而不是

.models(MyModel)

我不知道(但)这是如何扩展的,但似乎工作正常。

答案 2 :(得分:1)

使用Whoosh遇到同样的问题,安装了Elasticsearch并且None元素消失了。