我正在构建一个基于Wagtail的搜索引擎,在多次浏览文档后,我仍然遇到了一个问题。 我使用的是v1.9 类别功能,以及Elastic Search v5后端。
这是我的PublicationPage模型(我想要的结果)和DisciplineCategory模型(我想要过滤的模型)。
# models.py
class PublicationPage(AbstractForm):
disciplines = ParentalManyToManyField('home.DisciplineCategory', blank=True)
search_fields = Page.search_fields + [
index.RelatedFields('disciplines', [
index.FilterField('name')
])
]
class DisciplineCategory(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
class Meta:
verbose_name = 'Discipline'
verbose_name_plural = 'Disciplines'
当我跑步时
./manage.py update_index
我得到了
ValueError: 'disciplines' does not resolve to an item that supports prefetching - this is an invalid parameter to prefetch_related().
由于它强烈依赖于django-modelcluster,我很遗憾开始寻找解决方案...... 唯一的index.FilterFieldexample我发现这是一个在wagtail repo的测试中:https://github.com/wagtail/wagtail/blob/c6666c6de5e83bf94d18324858c121e6584ba47d/wagtail/tests/search/models.py#L19 但它基于TaggableManager,所以,不知道它是否适用于此。
希望有人能够提供帮助 提前致谢