Haystack whoosh模型()没有缩小模型



我有以下查询

locations = SearchQuerySet().filter_or(content__in=words).models(Location)

但它也返回了其他模型,我只想看到Location实例。

使用Haystack 2.1.0和whoosh 2.5

有什么想法吗?

我目前的解决方案是使用filter(django_ct='app_name.model')

我遇到了同样的问题,模型过滤被忽略了。通过降级到Haystack 2.0.0和Whoosh 2.4.1,我能够使.models()正常工作

这部分基于James Lims的回答,但这应该适用于Haystack和Whoosh的任何版本。不幸的是,双方都没有真正在这方面出手相救,但下面的解决方案似乎并不太糟糕。

class MySearchQuerySet(SearchQuerySet):
    def models(self,*mods):
        # We have to redefine this because Whoosh & Haystack don't play well with model filtering
        from haystack.utils import get_model_ct
        mods = [get_model_ct(m) for m in mods]
        return self.filter(django_ct__in=mods)

那么在SearchQuerySet使用MySearchQuerySet的情况下:

MySearchQuery().filter(name="foo").models(my_models.bar,my_models.baz)

最新更新