J'essaie de créer un extrait basé sur le tutoriel Wagtail here.Les extraits ne figurant pas sur la page Web
J'ai construit mon extrait dans models.py
et créer une étiquette de modèle personnalisé dans le dossier templatetags
et connecté l'extrait à un Page
via ForeignKey
. J'ai également créé le modèle html et exécuter les deux makemigrations
et migrate
. L'extrait est une image d'en-tête et une légende qui apparaît sur toutes les pages à l'exception de la page d'accueil. Code comme suit:
Snippet Modèle:
@register_snippet
class HeroImage(models.Model):
text = models.CharField(max_length=255)
image = models.ForeignKey(
'wagtailimages.Image',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
panels = [
FieldPanel('text'),
ImageChooserPanel('image'),
]
def __str__(self):
return self.text
Snippet Modèle personnalisé Tag:
@register.inclusion_tag('hero_image.html', takes_context=True)
def hero_images(context):
self = context.get('self')
if self is None or self.depth <= 2:
hero =()
else:
hero = HeroImage.objects.all()
return {
'hero': hero,
'request': context['request'],
}
Snippet connecté à la page:
class MenuPage(Page):
hero = models.ForeignKey(
'home.HeroImage',
null=True,
blank=True,
on_delete=models.SET_NULL,
related_name='+'
)
content_panels = Page.content_panels + [
SnippetChooserPanel('hero'),
]
J'ai créé deux Snippets et sélectionné dans ma page dans l'interface d'administration. Dans le modèle j'ai essayé beaucoup d'appels différents à l'extrait mais ils ne rapportent rien. Les appels que j'ai essayé comprennent:
{{ page.hero }}
{{ page.hero.text }}
{{ hero.text }}
{{ page.hero_images }}
{{ page.hero_images.text }}
Etc...
Rien n'a fonctionné malheureusement, la seule chose que je réussi à travailler est en tapant {{ hero }}
qui est retourné <QuerySet [<HeroImage: Lorem Ipsum One>, <HeroImage: Lorem Ipsum Two>]>
Qu'est-ce que je fais mal?