在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')
编辑: 在我的帖子中解释说SQL可能类似于多对多表中的查询之后,我对Google术语有了一些新的想法。
我还要再处理一次,如果我很快得到答复,请回答我自己的问题。 昨晚我在这头上ash头,但可能只需要新的一天。发布之前,我需要先找个橡皮鸭说话。
EDIT2: 我在下面发布了自己的答案,仍然很乐意接受建议。
答案 0 :(得分:0)
这将返回我追求的值,如果有人有更好的主意,我很乐意接受别人的回答。
a
这显然返回了玩家ID和计数的列表,但是添加了frontEndToolsModal
和$("a.someNewClass").on('click', function(e){
// stuff happens
}
,我们就在那里。