Wagtail 显示与当前页面同组的其他相关页面

Wagtail show other related pages from the same group as the current page

我无法计算出显示与当前课程在同一组中的其他课程列表所需的模板代码。

我已经使用优秀的 'Learn Wagtail' 教程创建了一个与博客模型基本相同的模型,除了我用一个页面扩展了它,以便使用可排序的方式对不同的课程页面进行分组,以便它们可以重新排列。

LessonGroupOrderable - 可使用 LessonGroupPage 作为父项进行订购(相关名称 = 'group_lessons')。 FK 到 LessonDetailPage,以便可以添加和重新排序它们。

LessonGroupPage - Course/topic title/details 加上 InlinePanel ('group_lessons')

LessonDetailPage - 课程内容页面

在 LessonDetailPage 模板上,如何获取当前页面所在的所有组(和课程)以便显示相关课程列表?

例如,假设 LessonGroupOrderable 有一个名为 lesson_detail_page 的字段,那么以下查询应该为您提供页面的相关组:

groups = LessonGroup.objects.filter(group_lessons__lesson_detail_page=page)

我建议您在 LessonDetailPage 模型上使用 get_context 向您的模板提供组列表,而不是直接在您的模板中提供,只是为了不影响业务逻辑所以:

def get_context(self, request):
    context = super().get_context(request)

    context['groups'] = list(LessonGroup.objects.filter(group_lessons__lesson_detail_page=self))

    return context

然后在您的 LessonDetailPage 模板中:

<ul>
{% for group in groups %}
    <li>{{ group.title }}</li>
{% endfor %}
</ul>