【发布时间】:2021-10-08 11:40:38
【问题描述】:
我想制作表格来显示用户和团队的总分。
型号:
class Team(Model):
team_name = models.CharField(max_length=20, null=True, blank=True)
class Player(Model):
player_id = models.IntegerField(unique=True, null=False, blank=False)
player_first_name = models.CharField(max_length=20, null=True, blank=True)
player_last_name = models.CharField(max_length=20, null=True, blank=True)
class Game(Model):
score = models.FloatField(null=False, blank=False)
game_type = models.CharField(max_length=8, choices=GAME_CHOICES)
team = models.ForeignKey(Team, on_delete=models.CASCADE)
player = models.ForeignKey(Player, on_delete=models.CASCADE)
每场比赛都与特定的球员和特定的球队有关。每个玩家都可以在多个团队中,因此没有关系。
在我的表格中,我想要每个球员的总分和每支球队的总分。
我为我的桌子尝试过的代码:
class PlayerTable(tables.Table):
sum_scores = tables.Column(Player.objects.annotate(total_score=models.Sum('game__score')))
class Meta:
model = Player
exclude = ["id"]
attrs = {'class': 'table table-sm'}
但是,这似乎不起作用。 我该如何解决这个问题,以便玩家表中的最后一列将是每个玩家的总分?
【问题讨论】:
-
为什么要创建表列?我认为如果您在 orm 查询期间生成一个 sum 的虚拟字段会更好。
标签: python django django-models django-orm django-tables2