簡體   English   中英

根據用戶動態過濾Haystack SearchQuerySet

[英]Dynamically filter Haystack SearchQuerySet based on the user

我需要根據當前用戶篩選Haystack的SearchQuerySet。 我知道我可以在其他視圖中通過request.user獲取當前用戶,所以我想我需要覆蓋Haystack的默認SearchView,但是我不確定如何。 以下是我的urls.py和views.py的示例。

urls.py:

urlpatterns = patterns('mysite.search.views',
    url(r'^mymodel/$', search_view_factory(
        view_class=MySearchView,
        template='mymodel_search.html',
        form_class=MyModelSearchForm,
        searchqueryset = SearchQuerySet().models(MyModel),
    ), name='mymodel_search'),
    ...

views.py:

class MySearchView(SearchView):
    def build_form(self, form_kwargs=None):
        prop = UserProfile.objects.get(user = self.request.user).property
        self.searchqueryset = self.searchqueryset.filter(property = prop)

        return super(MySearchView, self).build_form(form_kwargs)

但是,這似乎不起作用。 結果僅限於MyModel(在urls.py中過濾),但是MySearchView中的過濾似乎沒有任何作用。 我應該采取其他方式或地點嗎?

這是我自己的錯誤。 在我自定義的MyModelSearchForm的search()方法中,我將搜索查詢集重置為SearchQuerySet().models(MyModel) ,因此它替換了所有以前的過濾。 我嘗試使用MySearchView的方法有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM