4

我有以下查询

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

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

使用 Haystack 2.1.0 和 whoosh 2.5

有任何想法吗?

4

3 回答 3

3

我目前的工作是使用filter(django_ct='app_name.model')

于 2013-08-20T20:46:39.303 回答
1

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

于 2013-09-17T22:03:58.903 回答
0

这部分基于 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)
于 2014-11-26T08:10:04.313 回答