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 に答える