Je suis en train de mettre en place un simple blog dans Wagtail. Dans le cas des pages du blog, la recherche devrait également se pencher sur les deux champs personnalisés «intro» et «body». Mon blogpage modèle est la suivante:recherche de balises dans les champs de recherche personnalisés ne fonctionne pas
class PageWithSidebar(Page):
def get_context(self, request):
context = super(PageWithSidebar, self).get_context(request)
context['tags'] = BlogPageTag.objects.all().select_related().values('tag_id', 'tag_id__name').annotate(item_count=Count('tag_id')).order_by('-item_count')[:10]
context['categories'] = BlogCategory.objects.values('name').annotate(Count('name')).values('name').order_by('name')
context['recent_blogpages'] = Page.objects.filter(content_type__model='blogpage').filter(live='1').order_by('-first_published_at')
return context
class BlogPage(PageWithSidebar):
date = models.DateField("Post date")
intro = models.CharField(max_length=250)
body = RichTextField(blank=True)
tags = ClusterTaggableManager(through=BlogPageTag, blank=True)
categories = ParentalManyToManyField('blog.BlogCategory', blank=True)
social_description = models.CharField(max_length=140, blank=True)
def main_image(self):
gallery_item = self.gallery_images.first()
if gallery_item:
return gallery_item.image
else:
return None
def main_image_caption(self):
gallery_item = self.gallery_images.first()
if gallery_item:
return gallery_item.caption
else:
return None
search_fields = PageWithSidebar.search_fields + [
index.SearchField('intro'),
index.SearchField('body'),
]
content_panels = PageWithSidebar.content_panels + [
MultiFieldPanel([
FieldPanel('date'),
FieldPanel('tags'),
FieldPanel('categories', widget=forms.CheckboxSelectMultiple),
FieldPanel('social_description'),
], heading="Blog information"),
FieldPanel('intro'),
FieldPanel('body'),
InlinePanel('gallery_images', label="Gallery images"),
]
La recherche fonctionne très bien pour le champ « title » mais pas pour les deux champs personnalisés. Je n'obtiens aucun résultat si je recherche des mots qui sont juste contenus dans le champ 'intro' ou 'body'.
Des idées que je manque?
De quel moteur de recherche utilisez-vous? Le backend par défaut est limité et ne prend pas en charge les champs personnalisés. – dentemm
J'utilisais celui par défaut. Après la configuration d'elasticsearch, tout fonctionne comme prévu. Thx – Mischa