gpt4 book ai didi

python - 查询多个模型并将结果放入表中

转载 作者:太空宇宙 更新时间:2023-11-03 17:12:38 24 4
gpt4 key购买 nike

我有这些模型:

class League(models.Model):
...

class Game(models.Model):
league = models.ForeignKey(League, related_name='games')
...

class Competitor(models.Model):
user = models.ForeignKey(User, related_name='competitors')
game = models.ForeignKey(Game, related_name='competitors')
points = models.CharField(max_length=50, blank=True)
...

我想在我的模板中制作一个联赛得分表:

      | Game1 | Game2 | Game3 | Tot
Comp1 | | | 8 | 8
Comp2 | 5 | | 1 | 6
Comp3 | | 4 | 3 | 7

但我不知道如何在 View 中进行此类查询。我知道我可以参加联赛:

l = get_object_or_404(League, pk=id) 
g = l.games

并将其放在表头中,如下所示:

{% for game in g %}
<th>{{ game.name}}</th>
{% endfor %}

但是我如何获得游戏联盟的不同竞争对手的列表呢?即使他们只在联赛中打过一场比赛。

如何在游戏中迭代竞争对手以获得积分?我应该在这里研究什么方法?或者这是一种更好的结构方式?

最佳答案

我认为您应该能够执行 game.competitors_set.all() 并获取给定游戏对象的竞争对手。然而,也许这并不正是您正在寻找的。如果您想获取联赛对象并获取返回联赛中所有竞争对手的查询集,我认为您想要的是:

league = League.objects.get(pk=<the league you want>)
competitors = Competitors.objects.filter(game__league=league)

~编辑~

要进行迭代,您需要以某种字典的形式收集 View 中的数据,并采用对迭代有意义的格式,然后将其传递给模板。我确实注意到一件事:您将“游戏”作为竞争对手模型的单个实例。这意味着每个参赛者只参加一场比赛。我想你想把它变成一个ManyToManyField。请参阅here了解更多信息。

关于python - 查询多个模型并将结果放入表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33943612/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com