Я создал несколько фрагментов трясогузки, чтобы представить ссылку на страницу и текст для отображения. Например, мне может понадобиться ссылка на Свяжитесь с нами на многих страницах, всегда с одним и тем же текстом, который может редактировать пользователь.
models.py
@register_snippet
class PageLink(models.Model):
link_text = models.CharField(max_length=100)
related_page = models.ForeignKey(
'wagtailcore.Page',
null=True,
blank=False,
on_delete=models.SET_NULL,
related_name='+',
)
panels = [
MultiFieldPanel(
[
FieldPanel('link_text'),
PageChooserPanel('related_page'),
],
heading = "Text and page",
)
]
def __str__(self):
return self.link_text
class Meta:
verbose_name = "Page link"
verbose_name_plural = "Page links"
register_snippet(PageLink)
templatetags / link_tags.py
@register.inclusion_tag("snippets/your_harmony_link.html", takes_context=True)
def links(context):
return {
'links': PageLink.objects.all(),
'request': context['request'],
}
your_harmony_link. html
{% for link in links %}
{{ link.url }} * {{ link.text }}
<p>
<a href="{{ link.url }}">
{{ link.text }}
</a>
</p>
{% endfor %}
I Я просто хочу показать один URL здесь, но я перебираю их, чтобы убедиться, что у меня есть правильная модель. Когда страница отображается, я вижу все ссылки, как и ожидалось, но вижу только link.text , а не link.url
[EDIT] : это было решено (см. комментарий), но остается вопрос:
Как я могу получить URL для конкретной ссылки? Кажется, на PageLink нет ключа, или я что-то упустил?