因此,我有一个设置为通用干草堆网址的模板:
url(r'^$', search_view_factory(
view_class=SearchView,
template='base.html',
searchqueryset=sqs,
form_class=ModelSearchForm
), name='haystack_search'),
在其中我需要删除
tasks.filter(completed=False).order_by('priority', 'dueDate')
之类的东西。现在,在模板中,我可以按
user.get_profile.task_set.all
转到任务,但是我无法执行过滤和排序。通过视图条目很容易解决这个问题,但是由于干草堆没有指向视图,我如何才能将经过过滤和排序的列表传递到模板中?
我需要提到的是,筛选后的和有序列表与haystack的搜索功能无关。
最佳答案
代替使用SearchView
,创建一个子类并定义方法extra_context
:
class MySearchView(SearchView):
def extra_context(self):
return { 'ordered_tasks': ... }
此方法必须返回带有其他上下文变量的字典。
最后,在对
view_class
的调用中,将此新视图类传递给search_view_factory
。关于python - 将用户对象和筛选的对象列表传递到自定义SearchView子类中,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14704761/