Добрый день,
Настраиваю haystack + elasticsearch, но почему-то не происходит поиск по модели. Видно какую-то маленькую деталь упустил и уже второй день не могу понять что не так. Ньюанс еще в том что я стараюсь использовать CBV. Лог ошибок не выдает, просто говорит, что не может найти данные.
models.py
class Post(models.Model):
title = models.CharField(max_length=255) # title of post
datetime = models.DateTimeField(u'дата публикации') # date of post
content = models.TextField(max_length=10000) # text of post
background_image = models.ImageField(upload_to="pics/", verbose_name=u"Your image", help_text="150x150", null=True)
def __str__(self):
return self.title
def get_absolute_url(self):
return '%i/' % self.id
views.py
class MySearchView(SearchView):
template_name = "blog/search.html"
def get_queryset(self):
queryset = super(MySearchView, self). get_queryset()
return queryset.filter(pub_date__gte=date(2015, 1, 1))
def get_context_data(self, *args, **kwargs):
context = super(MySearchView, self).get_context_data(*args, **kwargs)
return context
search.html
{% block content %}
<form type="get" action=".">
<input type="text" name="q">
<button type="submit">Search</button>
</form>
{% for post in posts %}
<h1>{{ post.title }}</h1>
<p>{{ post.content }}</p>
{% empty %}
<p>No results found.</p>
{% endfor %}
test
{% endblock %}
search_indexes.py
from haystack import indexes
from .models import Post
import datetime
class PostIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
content = indexes.CharField(model_attr='content')
def get_model(self):
return Post
def index_queryset(self, using=None):
"""Used when the entire index for model is updated."""
return self.get_model().objects.filter(datetime=datetime.datetime.now())
urls.py
urlpatterns = patterns('',
url(r'^search/?$', MySearchView.as_view(), name='search'),