如何在整个项目中拥有一些背景?

时间:2015-05-27 13:26:07

标签: python django django-templates

我正在尝试拥有一个团队模型,并希望能够在我的项目中访问其字段,就像您在任何地方使用{{user.username}}一样。 在这里,我已经把我的团队模型。

class Team(models.Model):
    name = models.CharField(max_length=25)
    manager = models.ForeignKey(User)
    coin = models.IntegerField(default=50000)
    gem = models.IntegerField(default=0)
    motivation = models.IntegerField(default=100)
    fans_satisfaction = models.IntegerField(default=100)
    time_created = models.DateTimeField(auto_now_add=True)

感谢任何帮助,谢谢

3 个答案:

答案 0 :(得分:2)

如果要在模板中使用它,请编写上下文处理器。 https://docs.djangoproject.com/en/1.8/ref/templates/api/#writing-your-own-context-processors

如果您想根据要求提供,则必须编写自己的中间件。 https://docs.djangoproject.com/en/1.8/topics/http/middleware/#writing-your-own-middleware

答案 1 :(得分:2)

你不需要任何特别的东西。正如你所说,Team有一个ForeignKey to User:这意味着你可以随时访问用户所在的团队:

{{ user.team_set.all }}

请注意,与您所说的相反,用户没有单一的团队:朝这个方向的FK意味着一个用户可以拥有许多团队。

答案 2 :(得分:0)

您可以在模块myapp.context_processors.py

中创建context processor
def team(request):
    team = None
    if request.user.is_authenticated():
        try:
            # fetch the team managed by the logged in user
            team = Team.objects.get(manager=request.user)
        except (Team.DoesNotExist, Team.MultipleObjectsReturned):
            pass
    return {'team': team}

myapp.context_processors.team添加到设置中的上下文处理器列表中。然后,在您的模板中,您可以访问{{ team }}