Python 将streamfield添加到Wagtail中的搜索索引

Python 将streamfield添加到Wagtail中的搜索索引,python,django,wagtail,Python,Django,Wagtail,我很难将streamfield添加到wagtail搜索索引中。这会影响可用块或自定义块 从我在邮件列表中发现的情况来看,自定义块应该实现所有块都可以实现的get\u searchable\u content 这是我想索引的模型: class BlogPage(Page): author = models.ForeignKey(User, on_delete=models.PROTECT) date = models.DateField("Post date") main_

我很难将streamfield添加到wagtail搜索索引中。这会影响可用块或自定义块

从我在邮件列表中发现的情况来看,自定义块应该实现所有块都可以实现的
get\u searchable\u content

这是我想索引的模型:

class BlogPage(Page):
    author = models.ForeignKey(User, on_delete=models.PROTECT)
    date = models.DateField("Post date")
    main_category = models.ForeignKey('blog.BlogCategory', related_name='main_category', default=1, on_delete=models.PROTECT)
    categories = ParentalManyToManyField('blog.BlogCategory', blank=True, related_name='categories')
    readtime = models.IntegerField(blank=True, null=True)
    subtitle = models.CharField(
        verbose_name=_('subtitle'),
        max_length=255,
        help_text=_("The page subtitle as you'd like it to be seen by the public - also the blog post teaser."),
    )
    body = StreamField([
        ('heading', general.TitleBlock()),
        ('paragraph', blocks.RichTextBlock()),
        ('image', general.FillImageChooserBlock()),
        ('subtitle', general.SubTitleBlock()),
        ('pullquote', general.PullQuoteBlock()),
        ('blockquote', general.BlockQuoteBlock()),
    ])
    cover = models.ForeignKey(
        'wagtailimages.Image',
        on_delete=models.PROTECT,
        related_name='+'
    )

    content_panels = Page.content_panels + [
        MultiFieldPanel([
            FieldPanel('subtitle'),
            FieldPanel('date'),
            FieldPanel('main_category', widget=forms.Select),
            FieldPanel('categories', widget=forms.CheckboxSelectMultiple),
            ImageChooserPanel('cover'),
            FieldPanel('author'),
        ], heading="Blog information"),
        StreamFieldPanel('body'),
    ]

    search_fields = Page.search_fields + [
        index.FilterField('date'),
        index.FilterField('main_category'),
        index.SearchField('body'),
        index.SearchField('subtitle'),
    ]

    def get_context(self, request):
        context = super().get_context(request)
        context['posts'] = BlogPage.objects.exclude(id=self.id).order_by('-date')[:10]
        return context

    def save(self, *args, **kwargs):
        if self.body.stream_data:
            self.readtime = read_time_as_minutes(self.body.stream_data)
        return super().save(*args, **kwargs)

任何提示的thx:)

由于您尚未配置搜索后端,因此您使用的是默认数据库后端。这只允许您搜索默认字段,任何要在搜索中使用的自定义字段都需要更高级的搜索引擎。这是可以解释的

您是否收到错误,或者streamfield没有在搜索结果中返回?还有,你在使用哪个搜索后端?嘿,丹特姆,我只是没有得到结果,所以没有错误消息。到目前为止,我还没有配置搜索后端,所以我猜它是SQLite?好的,这就解释了问题。谢谢你的回答,我想因为我在与Streamfield合作时试图添加这一点,我不知怎么被蒙住了眼睛:)欢迎!但是wagtail绝对是一款不错的django cms,我更喜欢它而不是django cms,因为它的streamfield功能是的,我不得不同意。对我来说,用一个模板片段嵌入块非常有吸引力,玩一点它就说服了我去做:)有可能在一个streamfield中增加一些块吗?目前,streamfield中的所有块似乎都具有相同的优先级@登特姆