干草堆,嗖的一声不能开始搜索

时间:2016-03-10 09:03:50

标签: python django django-haystack

我是django的新手,对不起,如果问题是如此微不足道。有人能告诉我get_queryset()和get_context_data()函数之间的关系。

我有一个大海捞针serachview。我正在尝试制作"从#34;搜索工作。当我查找索引的完整单词时,我可以看到在get_queryset和context_list中的上下文中都找到了该单词。但是当我查找这个单词的前三个字母时,我可以看到get_queryset()找到它,但我在上下文中的object_list是空的。这2个功能如何工作以及为什么我有不同的搜索结果。

例如:在数据库中我的名字就像; " nametolookfor"  当我搜索" nametolookfor"时,一切都很好。  但是当我搜索" name" get_queryset可以找到它但不在上下文中

我的观点:

class MainPageView(SearchView):
    """ View for main page """
    template_name = "index.html"
    form_class = PersonalSearchForm
    model = PersonalProfileModel


    @method_decorator(never_cache)
    @method_decorator(csrf_protect)
    @method_decorator(sensitive_post_parameters())
    def dispatch(self, *args, **kwargs):
        return super(MainPageView, self).dispatch(*args, **kwargs)

    def post(self, request):
        pass

    def get_context_data(self, **kwargs):
        context = super(MainPageView, self).get_context_data(**kwargs)
        print context
        return context

    def get_queryset(self):
        form_class = PersonalSearchForm
        # further filter queryset based on some set of criteria
        queryset = super(MainPageView, self).get_queryset()
        form = form_class(self.request.GET or None)
        if form.is_valid():
            qr = form.cleaned_data['q']
            print qr
            queryset = queryset.filter(name__startswith=qr)
            object_list = self.model.objects.filter(name__startswith=qr)
            print queryset
        return queryset

形式:

class PersonalSearchForm(SearchForm):

    def search(self):
        sqs = super(PersonalSearchForm, self).search()

        if not self.is_valid():
            return self.no_query_found()

        return sqs

0 个答案:

没有答案