Одна вещь о Wagtail - то, что я бы назвал деревом данных, состоит только из страниц (оно называется деревом страниц ). Это дерево используется в качестве основы для навигации, но, конечно, иногда вы можете захотеть, чтобы элемент навигации в этом дереве был чем-то отличным от страницы. Я выполняю то, что вы хотите сделать, используя подклассы Page
:
from django.http import HttpResponseRedirect
class Node(Page):
subpage_types = [your subpage types]
parent_page_types = [your parent page types]
link = models.CharField(max_length=255, default='', blank='True')
content_panels = Page.content_panels + [
FieldPanel('link')
]
def serve(self, request):
if self.link is not None:
return HttpResponseRedirect(self.link)
else:
pass
И в шаблоне:
{% for item in menu_items %}
<li>
<a href="{% if item.specific.link and item.specific.link != '' %}{{ item.specific.link }}{% else %}{% pageurl item %}{% endif %}">{{ item.title }
</a>
</li>
{% endfor %}