Объединить несколько SearchQuerySet
Я использую Haystack и solr для глобального поиска с несколькими моделями, я пытаюсь использовать разные фильтры для моделей, но в конце я должен вернуть 1 набор запросов, я не нахожу, как объединить это.
#views
from haystack.generic_views import SearchView
class search(SearchView):
def get_queryset(self):
queryset = super(search, self).get_queryset()
q1 = queryset.models(Event).filter(...)
q2 = queryset.models(News).filter(...)
queryset = q1 | q2 #don't work
queryset = list(chain(q1, q2)) #don't work
return queryset.order_by('-pub_date','cname')
Спасибо
1 ответ
Я нашел способ изменить контекст, но я не уверен, что это лучший...
def excludeResults(results):
for i in results:
if i.model == Event and i.date < datetime.now():
results.remove(i)
return results
class search(SearchView):
def get_queryset(self):
queryset = super(search, self).get_queryset()
return queryset.filter(visible = True).order_by('cname','-pub_date')
def get_context_data(self, *args, **kwargs):
context = super(search, self).get_context_data(*args, **kwargs)
context['page_obj'].object_list = excludeResults(context['page_obj'].object_list)
return context
может быть, лучшее решение?