使用ParentalManyToManyField过滤Wagtail的搜索结果

时间:2017-03-20 10:46:25

标签: wagtail

我正在构建一个基于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,所以,不知道它是否适用于此。

希望有人能够提供帮助 提前致谢

0 个答案:

没有答案