0

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?

Répondre

0

Résolu le problème. Dans le cas où quelqu'un expérimente quelque chose de similaire:

J'avais les balises de gabarit sur un gabarit séparé qui était en cours de chargement dans base.html. Le modèle avec les tags Snippet doit être le identique au modèle Page.