我的问题是关于 Django 模型和外键的。我搜索了类似的问题,但似乎没有找到。
我的模型如下:
class Matches(models.Model):
day = models.ForeignKey('Day')
team_home = models.ForeignKey('Team', related_name="home_set")
team_away = models.ForeignKey('Team', related_name="away_set")
golH = models.IntegerField(null=True)
golA = models.IntegerField(null=True)
class Team(models.Model):
league = models.ForeignKey('League')
manager = models.ForeignKey(User)
name = models.CharField(max_length=20)
现在,有没有办法在我调用时获取团队名称而不是 id:
Matches.objects.filter(day=1).values()
作为替代:有没有办法在 Matches 类中添加两个属性,例如:类匹配(模型。模型):...
def team_home_name(self)
return self.team_home.name
def team_home_away(self)
return self.team_away.name
并在我打电话时将它们放入字典中:
Matches.objects.filter(day=1).values()
注意事项:我想将团队 ID 保留为外键。我需要在字典中包含团队名称,因为我想传递给模板的是团队名称而不是团队 ID。我知道我可以在将字典传递给模板的 View 中使用所需信息构建一个新字典,但如果有办法在模型级别使用一些 django 技巧来做到这一点,那就更好了。
谢谢。
正如布鲁诺提到的,您可以将对象直接传递给模板。但是,使用 values()
您也可以选择决定什么是字典值。例如:
Matches.objects.filter(day=1).values('team_home__name','team_away__name')
我是一名优秀的程序员,十分优秀!