Django-стог сена фильтрации результатов с использованием атрибутов? - PullRequest
3 голосов
/ 24 декабря 2009

Может кто-нибудь показать мне пример того, как фильтровать результаты полнотекстового поиска с помощью django-haystack, используя атрибуты? Я просмотрел руководство на их сайте, но все еще не уверен, как использовать стог сена.

Например, допустим, у меня есть Класс продукта:

class Product(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    category = models.CharField(max_length=10)
    color = models.CharField(max_length=10)

Если я хочу предоставить полнотекстовый поиск по названию и описанию, и фильтрация (на основе раскрывающихся списков, а не свободного текста) по категории и цвет - что мне нужно сделать? Могу ли я использовать формы и представления, которые идут с стогом сена?

Спасибо.

Ответы [ 2 ]

6 голосов
/ 24 декабря 2009

Вы смотрели огранку учебник / документацию на веб-сайте django-haystack? В нем описан пример фильтрации на основе автора модели Note, представленной в руководстве по началу работы.

Еще одна опция, отличная от стога сена и поиска, - django-filter от Алекса Гейнора, она позволяет фильтровать поля на основе содержимого модели, а не индекса. Поэтому его можно использовать на моделях, которые не проиндексированы с django-haystack. Вы можете проверить хранилище здесь . В папке с документами есть хорошие документы, и включенные тесты демонстрируют всю функциональность.

0 голосов
/ 11 декабря 2011

, если мы суммируем, как добавить огранку сена

  1. вам нужно добавить граненые поля в модель индекса
 title =  CharField(model_attr='title', faceted=True)
 description =  CharField(model_attr='description', faceted=True)
  1. изменить набор запросов на
  sqs = SearchQuerySet().facet('title').facet('description')
  1. использовать граненые версии формы поиска и представления, которые предоставляет стог сена в urls.py, использовать
  url(r'^$', FacetedSearchView(form_class=FacetedSearchForm, searchqueryset=sqs), name='haystack_search'),
  1. добавить огранку в шаблон следующим образом http://docs.haystacksearch.org/dev/faceting.html#display-the-facets-in-the-template

  2. перестройте свой индекс, чтобы увидеть эффекты огранки

 
   python manage.py rebuild_index
...