Поиск в стоге сена не возвращает результаты должным образом, ошибка: список "объект не имеет атрибута" фильтр "

Я нуб в Django и Haystack, это моя форма, которая расширяет Haystack SearchForm

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' object has no attribute 'filter', Я следовал за документацией и примером. Я не могу понять, в чем проблема? Метод поиска возвращает объект списка вместо объекта SearchQuerySet и, следовательно, не может найти атрибут фильтра. пожалуйста помоги. Я использую Python 2.7.10, Django 1.8.4 и Solr 4.10.2 sqs

введите описание изображения здесь

2 ответа

Через 3-4 дня я достиг решения.

Решение 1-: изменение в схеме

Шаг 1: Перейдите в файл управляемой схемы вашей коллекции и отредактируйтеШаг 2: Найдите и замените <field name="django_ct" type="text_general"/> в <field name="django_ct" type="string"/>

  • Версия операционной системы: Ubuntu 14.04 LTS
  • Версия для поисковой системы: Solr 7.2.1
  • Версия Python: 3.4.3
  • Джанго версия: 2.0
  • Версия стога сена: 2.8.0

Решение 2-: взломать основной файл

Шаг 1: sudo vim / home / ваш путь /site-packages/haystack/backends/solr_backend.pyШаг 2: Найти и заменить app_label, model_name = raw_result[DJANGO_CT].split('.') в app_label, model_name = raw_result[DJANGO_CT][0].split('.')

Шаг 1:

      sudo vim /home/your path/site-packages/haystack/backends/solr_backend.py

Шаг 2: Найдите и замените
app_label, model_name = raw_result[DJANGO_CT].split('.')
с
app_label, model_name = raw_result[DJANGO_CT][0].split('.')
Шаг 3: Найдите и замените
result = result_class(app_label, model_name, raw_result[DJANGO_ID], raw_result['score'], **additional_fields)
с
result = result_class(app_label, model_name, raw_result[DJANGO_ID][0], raw_result['score'], **additional_fields)

Другие вопросы по тегам