Django在一组中获得对象计数

时间:2019-03-13 21:36:13

标签: django django-models django-orm

在django中,我似乎无法绕过复杂的查询。

我有一个播放器,其中有玩过游戏。 每个播放都有一个由玩过该游戏玩家组成的多对多字段。

对于player1,我如何计算他在Django orm中玩得最多的对手?

在SQL中,我猜这可以从多对多表中算出,例如:

SELECT player_id, count(*)
FROM play_player
WHERE play_id in (SELECT play_id FROM play_player WHERE player_id = 'player1_id')

这些是我的模特:

class Game(models.Model):
    """A game to be played and/or owned"""
    name = models.CharField(max_length=255)

class Player(models.Model):
    """Someone who plays games"""
    name = models.CharField(max_length=255)
    games = models.ManyToManyField(Game)

class Play(models.Model):
    """Players have played a game"""
    name = models.CharField(max_length=50, null=True, blank=True)
    description = models.TextField(max_length=250, null=True, blank=True)
    date = models.DateField(
        default=timezone.now, help_text='When was the game played?')
    game = models.ForeignKey(
        Game,
        on_delete=models.SET_NULL,
        null=True,
        help_text='What game was played?')
    players = models.ManyToManyField(Player, help_text='Who was playing?')
    winner = models.ForeignKey(
Player, on_delete=models.SET_NULL, null=True, related_name='winner')

Gist of models

编辑: 在我的帖子中解释说SQL可能类似于多对多表中的查询之后,我对Google术语有了一些新的想法。

我还要再处理一次,如果我很快得到答复,请回答我自己的问题。 昨晚我在这头上ash头,但可能只需要新的一天。发布之前,我需要先找个橡皮鸭说话。

EDIT2: 我在下面发布了自己的答案,仍然很乐意接受建议。

1 个答案:

答案 0 :(得分:0)

这将返回我追求的值,如果有人有更好的主意,我很乐意接受别人的回答。

a

这显然返回了玩家ID和计数的列表,但是添加了frontEndToolsModal$("a.someNewClass").on('click', function(e){ // stuff happens } ,我们就在那里。