Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django haystack搜索未正确返回结果,错误:list';对象没有属性';过滤器';_Django_Solr_Django Haystack_Django Search Lucene - Fatal编程技术网

Django haystack搜索未正确返回结果,错误:list';对象没有属性';过滤器';

Django haystack搜索未正确返回结果,错误:list';对象没有属性';过滤器';,django,solr,django-haystack,django-search-lucene,Django,Solr,Django Haystack,Django Search Lucene,我是django和haystack的noob, 这是我扩展haystack搜索表单的表单 from haystack.forms import SearchForm from ksaprice_app.models import ProductDiff, Vendor from django import forms from haystack.query import SearchQuerySet class ProductsSearchForm(SearchForm): vendor

我是django和haystack的noob, 这是我扩展haystack搜索表单的表单

from haystack.forms import SearchForm
from ksaprice_app.models import ProductDiff, Vendor
from django import forms
from haystack.query import SearchQuerySet
class ProductsSearchForm(SearchForm):
    vendor_list=Vendor.objects.all().values_list('vendor_name')
    OPTIONS=( (item,str(item)) for item in vendor_list)
    print OPTIONS    select_vendor=forms.MultipleChoiceField(widget=forms.CheckboxSelectMultiple,choices=OPTIONS, required=False)
    def __init__(self, *args, **kwargs):
        super(ProductsSearchForm, self).__init__(*args, **kwargs)
    def search(self):
      sqs=super(ProductsSearchForm, self).search()
      if not self.is_valid():
        return self.no_query_found()
    #check to see if the submitted is clean and then filter
      if self.is_valid():               
        if self.cleaned_data['select_vendor']:
            #name of the field in html will be by default form field name
            vendor_filter=self.cleaned_data['select_vendor']
            #v_filter=vendor_filter[0].replace("(u'","").replace("',)","")
            v_filter=vendor_filter[0]
            print v_filter
            #sqs=SearchQuerySet().filter(product_vendor_name=v_filter)[:10]
            sqs=sqs.filter(product_vendor_name=v_filter)[:10] ##error is here
    return sqs
    def no_query_found(self):
        return self.searchqueryset.all()[:10]
这就是我们的观点

def ProductsSearch(request):
#instantiate the form with parameters from get method
  form = forms.ProductsSearchForm(request.GET)
  #calling search method here that fetches the search result
  context_var={}
  context_var['products'] = form.search()
  context_var['form']=forms.ProductsSearchForm
  print context_var
  return render_to_response('ksaprice_app/product_search.html', {'context_var': context_var})
在sqs.filter中,我发现这个错误
“list”对象没有属性“filter”
。我跟着那条路走。我想不出问题出在哪里?。搜索方法返回的是列表对象而不是SearchQuerySet对象,因此无法找到筛选器属性。请帮忙。 我使用的是python 2.7.10、Django 1.8.4和solr 4.10.2 sqs是


3-4天后,我到达了解决方案

解决方案1-:架构中的更改

步骤1:转到您的集合管理架构文件并编辑 步骤2:查找并替换

  • 操作系统版本:Ubuntu 14.04 LTS
  • 搜索引擎版本:Solr 7.2.1
  • Python版本:3.4.3
  • Django版本:2.0
  • Haystack版本:2.8.0
解决方案2-:破解核心文件

步骤1:sudo vim/home/your path/site packages/haystack/backends/solr_backend.py 步骤2:查找并替换
应用程序标签,型号名称=原始结果[DJANGO\u CT]。拆分('.')
应用程序标签,型号名称=原始结果[DJANGO\u CT][0]。拆分('.')
步骤1:

sudo vim /home/your path/site-packages/haystack/backends/solr_backend.py
步骤2:查找并替换
app\u标签,model\u name=raw\u结果[DJANGO\u CT]。拆分('.')


app\u标签,model\u name=raw\u结果[DJANGO\u CT][0]。拆分('.')

步骤3:查找并替换
result=result\u类(应用程序标签、型号名称、原始结果[DJANGO\u ID]、原始结果['score']、**附加字段)



result=result\u class(应用程序标签、型号名称、原始结果[DJANGO\u ID][0]、原始结果['score']、**其他字段)

您在哪里定义sqs?前一行已注释out@xbirkettx很抱歉,在格式化代码以发布问题时删除了该行。它被定义为
sqs=super(ProductsSearchForm,self)。search()
在搜索方法中,请现在检查代码…您的代码似乎没问题,如果您打印它,sqs内部是什么?sqs是
[,,,,,,,,,]
@Xbirketx我在问题中添加了一张sqs的图片,请查看。。