Django在使用注释时随机排序

时间:2018-01-15 13:51:55

标签: sql django postgresql django-queryset

如果我随机命令我的查询集并打印出来,就像这样: -

[p for p in Player.objects.order_by('?')]

它可以按照您的预期运作。玩家以随机顺序出现。

如果我按照他们玩过的游戏数量来命令他们,就像这样: -

[p for p in Player.objects.annotate('games').order_by('games__count')]

它也可以像你期望的那样工作。玩家按照他们玩过的游戏次数排列。

但是我想让玩过相同数量游戏的玩家随机化。所以我这样做: -

[p for p in Player.objects.annotate('games').order_by('games__count', '?')]

它彻底打破了它。查询需要一两秒才能运行,我会一遍又一遍地获得同一个玩家,而且他们在订单方面遍布整个地方。

我做错了什么?

0 个答案:

没有答案