django-haystack - 从子类FacetedSearchView类访问request.GET

时间:2015-07-04 22:10:34

标签: python django django-haystack

我已经将django-haystack的FacetedSearchView子类化了,并希望在视图的URL中存在特定的GET参数时进行操作。如果我有一个基于函数的视图,我确切知道如何做到这一点,但在使用子类的子类时完全失去了。

request变量应该以某种方式。我假设我需要通过某种super()来电话,可能是__init__()覆盖?我尝试了以下内容:

def __init__(self, *args, **kwargs):
    super(MySearch, self).__init__(*args, **kwargs)
    if self.request.GET.get("date_facet", ""):
        do_something()

但是它告诉我返回的请求对象是None,但是它显然不应该是URL。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

事实证明,请求变量是可访问的,它只需要通过self,这意味着您只能通过父类共有的函数访问它。 __init__无法正常工作,因为直到稍后在父类中才定义请求。为了让事情发挥作用,我最终覆盖了get_results()类(最初只是return self.form.search()),其方式类似于以下内容:

class Foo(ParentClass):
    def get_results(self):
        if 'date_facet' in self.request.GET:
            year = int(self.request.GET['date_facet'])
            return self.form.search().filter(some_filter_function)

        return self.form.search()