我已经将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。
有什么想法吗?
答案 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()