【发布时间】:2017-06-23 02:20:06
【问题描述】:
我有一个包含各种不同字段类型的模型,我希望 Algolia 搜索引擎能够正确索引。到目前为止,我已经能够非常直接地处理models.char_fields - 我现在在想,索引各种其他字段类型的最佳方法是什么(例如,ForeignKey“对象”、ImageFields、DateTime 字段等等等)。
我注意到的一件事是 Algolia 将获取并存储 DateTimeField 作为 Unix 标准时间......所以,最初我认为我可以使用 {% humanize %} 在模板上呈现人类可读的内容,但没有运气。
我想知道是否有人知道从模型中拖出有用信息的方法 - 我的一个想法是在视图中抓取对象,然后为每个返回的对象带出唯一标识,然后进行一些条件流程将那个独特的身份与模特结合起来,然后我可以像往常一样与那个模特一起工作......?如:
def instant_search(request):
posts = Post.published.all()
context = {
'appID': settings.ALGOLIA['APPLICATION_ID'],
'searchKey': settings.ALGOLIA['SEARCH_API_KEY'],
'indexName': get_adapter(Post).index_name,
'posts': posts,
}
return render(request, 'blog/frame/instant_search.html', context)
模板内我可以使用{% for posts in post %} {% if post.id = _highlightResult.id.value %} ...do some stuff {% endif %} {% endfor %}
如果这还不够快(我几乎保证不会)我想知道 Algolia 是否可以处理关键信息,例如拖出模型中定义为的图像的 url ImageField 例如,就像我在模板中使用 post.image.url 或从模型中的 DateTime 字段 models.DateTimeField(default=timezone.now) 获取的人类可读值一样。这样做真的很好,因为 Algolia 索引定义的模型字段...
【问题讨论】:
标签: django django-models django-templates django-views algolia