请注意我使用 elasticsearch 作为我的后端。
使用 django 设置,与我的模型 ObjectA 关联的 Taggit 标记似乎没有出现在我的索引中
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
当我使用列出索引文档时
http://localhost:9200/_search
并查看我在数据库中插入的 ObjectA 实例的索引记录,“标签”元素显示为
"tags": []
只有在我跑步之后
manage.py rebuild_index [or update_index]
标签是否出现,即
"tags": ["tag-a", "tag-b"]
有趣的是'title'、'description' 会自动显示而不运行rebuild_index/update_index。
objecta_text.txt
{{ object.title }}
{{ object.description }}
{% for tag in object.tags.all %} {{ tag.name }} {% endfor %}
search_indexes.py
class ObjectAIndex(indexes.SearchIndex, indexes.Indexable):
text = indexes.CharField(document=True, use_template=True)
title = indexes.CharField(model_attr='title')
description = indexes.CharField(model_attr='description', null=True)
tags = indexes.MultiValueField()
def get_model(self):
return ObjectA
def prepare_tags(self, obj):
return [tag.name for tag in obj.tags.all()]
关于如何在不调用rebuild_index 的情况下让标签显示在索引文档中的任何建议?