我正在制作一个可重复使用的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“扩展”的任何页面模型的上下文中。
感谢任何帮助!
答案 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'