0

我整晚都在用头撞这个东西,在我下车之前,也许你们中的一个人知道我忽略了一些事情。

什么有效:我正在尝试使用 Django 1.4 和 Haystack 2.0-dev 创建一个图书搜索引擎。我已经很好地搜索了我导入的 4 本书及其页面。

什么不能:但是,我希望用户能够通过表单中的复选框选择一个人想要搜索的书籍。我一直在尝试,但没有出现复选框,没有列出任何书籍,即使我有 4 本书的标题等。

这是我的 search/views.py (主要是从这个问题借来的)

from django import forms
from haystack.forms import HighlightedModelSearchForm
from books.models import Book, Author

class BasicSearchForm(HighlightedModelSearchForm):    
    def __init__(self, *args, **kwargs):
        super(BasicSearchForm,self).__init__(*args,**kwargs)
        book_choices = Book.objects.all()
        book_tuples = tuple([(c.id, c.title) for c in book_choices])
        self.fields['book'] = forms.ChoiceField(choices=book_tuples, required=False)

    def search(self):
        sqs = super(BasicSearchForm, self).search()
        if self.is_valid() and self.cleaned_data['book']:
            if self.cleaned_data['book'] != "*":
                sqs = sqs.filter(book__id=self.cleaned_data['book'])

        return sqs

这是我的 urls.py

from django.conf.urls import patterns, include, url
from haystack.views import SearchView, search_view_factory
from haystack.query import SearchQuerySet  
from search.views import BasicSearchForm

urlpatterns = patterns('',
    url(r'^search/$', 
        SearchView(
        #template='book_search.html',
        form_class = BasicSearchForm
        ), 
    name='haystack_search'
    ),

    url(r'^accounts/login/', 'django.contrib.auth.views.login'),

)

我已经对此进行了很多搜索,并整夜搜索了文档,但它被避开了。也许有人在那里看到了我没有看到的东西?任何帮助表示赞赏,谢谢!

4

1 回答 1

0

为什么不使用这种方法。

1) Make a search title field. Each book will have a title. 
2) Create facets for your titles.
3) So when you search for any text, automatically all your books will be listed. 
Now when user clicks the book name in facets he will see results from that book only. 

您对这种方法有何评论?

于 2013-06-27T15:29:03.177 回答