【问题标题】:django haystack search form cannot find is_vald methoddjango haystack 搜索表单找不到 is_vald 方法
【发布时间】:2012-12-28 22:41:01
【问题描述】:

我正在使用 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'),

【问题讨论】:

    标签: python django django-forms django-haystack


    【解决方案1】:

    当您没有要访问的实例时,使用任何类都会导致相同的错误:

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

    所以你在None 上调用is_valid(),而不是在实际表单上。

    【讨论】:

    • 当我使用的字段是 ['q'] 查询字段时,我是否必须扩展 haystack.SearchForm 并制作我自己的字段。我在那里指定什么
    • 最重要的是,您应该删除包含None 初始化的那一行。为什么不使用文档中描述的FacetedSearchViewdjango-haystack.readthedocs.org/en/latest/…
    • 我不知道存在这样的视图,在我的 urls.py 文件中我指定使用此自定义 SearchView 不知道 haystack 提供了一个,如果一切设置正确,我应该能够遍历“结果”并获取我需要的数据?
    • 同样使用这个视图会引发错误 ''FacetedSearchView' object has no attribute 'status_code'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    • 2014-10-02
    • 2013-02-12
    • 2014-07-17
    • 2012-12-29
    • 2011-03-10
    • 1970-01-01
    相关资源
    最近更新 更多