1.index与model字段关联
from .models import Post
from haystack import indexes
class PostIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr="title")
body = indexes.CharField(model_attr="body")
def get_model(self):
return Post
def index_queryset(self, using=None):
return self.get_model().objects.all()
text = indexes.CharField(document=True, use_template=True)
这个是必须的,
title = indexes.CharField(model_attr="title")
body = indexes.CharField(model_attr="body")
通过model_attr
关联Post
模型里面的title
,body
字段。
title
,body
字段必须是templates/search/indexes/blog/post_text.txt里面声明的字段 post_text.txt的内容:
{{ object.title }}
{{ object.body }}
每次修改index的时候都要重新 使用python manage.py rebuild_index
命令重新生成index。
2,前端获取model get_absolute_url
{% for post in page.object_list %}
<h4><a href="{{ post.object.get_absolute_url }}">{{ post.title }}</a></h4>
{{ post.body|truncatewords:5 }}
{% empty %}
必须使用post.object.get_absolute_url
而不能使用post.get_absolute_url
,否则会报url为None的错误。
网友评论