如何使用Django管理外部联接,group_by和计数

史蒂夫

使用Django,我有以下模型:

class Player(models.Model):
    name = models.CharField(max_length=64)
    description = models.CharField(max_length=128)
    groupPlayer = models.ForeignKey(GroupPlayer)


class GroupPlayer(models.Model):
    description = models.CharField(max_length=128)
    name = models.CharField(max_length=32)

每个玩家都链接到一个组。某些群组没有玩家。我的目标是在Django中转换跟随查询(包括LEFT OUTER JOIN和Group by):

select GroupPlayer.description, GroupPlayer.name, COUNT(Player.name) as gplayer
from (GroupPlayer LEFT OUTER JOIN Player ON GroupPlayer.id = Player.groupPlayer_id)
GROUP BY GroupPlayer.id

到目前为止,我已经创建了3个查询集,但无法将它们放在一起以获得所需的结果:

   queryset_player = Player.objects.values('groupPlayer_id').annotate(total=Count('groupPlayer__id'))
   queryset_group = GroupPlayer.objects.select_retated(queryset_player)
   queryset_group2 = GroupPlayer.objects.all().prefetch_related('player_set')

任何人都可以为该左外联接提供帮助,分组并计数吗?

谢谢

vsd
from django.db.models import Count

groups = GroupPlayer.objects.annotate(num_players=Count('player'))
groups[0].num_players

集聚

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章