gpt4 book ai didi

django-haystack - Haystack - 为什么 RealtimeSearchIndex 有时不更新我保存的对象

转载 作者:行者123 更新时间:2023-12-04 01:38:44 26 4
gpt4 key购买 nike

我在 Django 中使用 Haystack 和 Whoosh

在 search_index.py 我有这个

class PageIndex(RealTimeSearchIndex):
text = CharField(document=True, use_template=True)
creator = CharField(model_attr='creator')
created = DateTimeField(model_attr='created')
org = CharField(model_attr='organisation')

site.register(Page, PageIndex)

我的模板看起来像这样
{{ object.name }}
{{ object.description }}
{{ object.template|striptags }}
{% for k,v in object.get_variables.items %}
{{ v }}
{% endfor %}

如果我使用更新的名称或描述保存页面,那么它会立即更新并在模板中包含来自 get_variables.items 的变量。但是,如果我只更新变量,则它不会更新。

是不是因为变量是另一个与之相关的对象,即使我保存在同一页面上,它也不会更改页面?如果是这样,我如何在更新相关对象时强制更新页面项目?

最佳答案

我同意 Daniel Hepper ,但我认为这里最简单的解决方案是将监听器附加到相关模型的 post_save 信号(请参阅 https://docs.djangoproject.com/en/dev/topics/signals/ ),然后重新索引模型。

例如,在 myapp/models.py 中,给定模型 MyRelatedModel,它具有 MyModel 的外键

from myapp.search_indexes import MyModelIndex

def reindex_mymodel(sender, **kwargs):
MyModelIndex().update_object(kwargs['instance'].mymodel)
models.signals.post_save.connect(reindex_mymodel, sender=MyRelatedModel)

关于django-haystack - Haystack - 为什么 RealtimeSearchIndex 有时不更新我保存的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7041657/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com