因此,我有一个设置为通用干草堆网址的模板:


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/

10-12 17:14