This is based partly on James Lims answer, но это должно работать для любых версий 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)
думал, что я делаю что-то неправильно, хорошо, что кто-то проверяет проблему –
Ваше решение фильтра (django_ct = «app_name.model») работает отлично ... Есть ли недостаток в использовании вашего решения? – ratata