2013-02-23 81 views
0

我一整晚都在抨擊我的頭,並且在我放棄之前,也許你們中有人知道我忽略了一些東西。如何讓模型爲Django Haystack搜索生成多種選擇?

什麼作品:我想創建一個使用Django 1.4和Haystack 2.0-dev的圖書搜索引擎。我已經通過我已經導入的4本書和他們的頁面進行了很好的搜索。

什麼不是:但是,我想要的是用戶可以通過表單中的複選框來選擇某個人想要搜索的書。我一直在努力的事情,但沒有複選框露面,沒有書列出即使我在那裏與冠軍有4等

這裏是我的搜索/ views.py(主要來自this question借用)

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'), 

) 

我已經做了很多關於這個搜索和沖刷的文檔了一夜,這是躲避。也許有人在那裏看到我沒有的東西?任何幫助表示讚賞,謝謝!

+0

這是否已解決或不?請檢查答案,無論如何它是有用的。 – 2013-07-01 12:05:29

回答

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. 

您對此方法有何評論?