0

haystackを使用して、選択したすべてのフィルター属性について、Personモデルに対して単純な検索クエリを実行しています。ファセット検索フォームを試して、汎用のTemplateViewを作成することにしましたSearchView

class SearchView(TemplateView):
    template_name = "index.html"
    results = EmptySearchQuerySet()
    form_class = FacetedSearchForm
    form = None
    query = ''
    selected_people = None

    def get(self, request, **kwargs):
        self.request = request
        self.query = self.get_query()
        if self.form.is_valid():
            self.results = self.get_results()
        context = self.get_context_data(request, **kwargs)

        if request.is_ajax() or request.GET.get('ajax'):
            self.template_name = 'search/Taleebo/search_results.html'

        return self.render_to_response(context)

    def get_query(self):
        return self.request.GET.get('q')

    def get_results(self):
        return self.form.search()

すべてのルーティングは正常に機能していますが、私のgetメソッドが呼び出されると、回線で失敗します

self.form.is_valid()

と言うエラーでNoneType' object has no attribute 'is_valid'

デフォルトのform_classを使用しているので、その属性を定義する必要はありませんか?

編集:

提供されているhaystackによるSearchViewを使用しようとしていますが、is_validは問題ではなくなりましたが、「結果」からレコードが返されません。urls.pyを次のように変更しました

 url(r'^search/person/', search_view_factory(
    view_class=SearchView,
    template='index.html',
    form_class=ModelSearchForm
), name='haystack_search'),
4

1 に答える 1

0

アクセスするインスタンスがない場合、任意のクラスを使用すると同じエラーが発生します。

class SearchView(TemplateView):
(...)
      form = None  //<= Here you set the form to None

つまり、実際のフォームではなく、を呼び出しis_valid()ているのです。None

于 2012-12-28T22:48:23.230 に答える