我正在将 Haystack 和 Whoosh 与 Django 一起使用
在 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 中的变量。但是,如果我只更新变量,那么它不会更新。
是否因为变量是与其相关的另一个对象,即使我保存在同一页面上,它也不会获取对页面的更改?如果是这样,当我更新相关对象时如何强制更新页面项?
我同意丹尼尔·赫珀 https://stackoverflow.com/users/211960/daniel-hepper,但我认为这里最简单的解决方案是将侦听器附加到相关模型的 post_save 信号(请参阅https://docs.djangoproject.com/en/dev/topics/signals/ 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)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)