Как указать шаблон для сниппета в StreamField при использовании SnippetChooserBlock
Я хочу использовать сниппет в StreamField:
@register_snippet
class Advert(models.Model):
url = models.URLField(null=True, blank=True)
text = models.CharField(max_length=255)
def __str__(self):
return self.text
class MyPage(Page):
body = StreamField([('Snippet', SnippetChooserBlock(
target_model='web.Advert')])
my_page.html:
{% for block in page.body %}
{% include_block block %}
{% endfor %}
Однако при рендеринге Advert он рендерит только str представление self.text. Как я могу задать шаблонное оформление для блока сниппета, например, как StructBlock?
Документация по SnippetChooserBlock отсутствует.
Как и все типы блоков, SnippetChooserBlock принимает аргумент template , который указывает путь к шаблону для рендеринга этого блока:
class MyPage(Page):
body = StreamField([('Snippet', SnippetChooserBlock(
target_model='web.Advert', template='blocks/advert.html')])
В этом шаблоне экземпляр сниппета доступен как переменная value:
<div class="advert">
<a href="{{ value.url }}">{{ value.text }}</a>
</div>