g添加到抽象子类的上下文中

时间:2018-10-05 09:21:38

标签: wagtail

我正在制作一个可重复使用的w应用程序,用于通过TeamMember模型管理团队成员。

我想要安装此应用程序,然后有一种简单的方法将团队成员添加到页面上下文中,而不必在每个页面模型上编写get_context函数。

在应用程序中,我添加了带有get_context函数的抽象Django模型:

class TeamPageExtension(models.Model):
    def get_context(self, request):
        context = super().get_context(request)
        context['team'] = TeamMember.objects.all()
        return context

    class Meta:
        abstract = True

在网站上。

class DummyTeamPage(Page, TeamPageExtension):
    template = 'home/team_page.html'

这不起作用。我可以看到在TeamPageExtension的get_context中调用super()无法正常工作,但无法想到另一种方法。

我想要的是将team变量添加到使用TeamPageExtension“扩展”的任何页面模型的上下文中。

感谢任何帮助!

1 个答案:

答案 0 :(得分:1)

感谢加斯曼的解决方案:

在应用中:

class TeamPageExtension():
    def get_context(self, request):
        context = super().get_context(request)
        context['team'] = TeamMember.objects.all()
        return context

在w现场:

class AnotherExtension():
    def get_context(self, request):
        context = super().get_context(request)
        context['alex'] = 'noob'
        return context

class DummyTeamPage(TeamPageExtension, AnotherExtension, Page):
    # Both 'team' and 'alex' are available in the template context
    template = 'home/team_page.html'