如果我随机命令我的查询集并打印出来,就像这样: -
[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', '?')]
它彻底打破了它。查询需要一两秒才能运行,我会一遍又一遍地获得同一个玩家,而且他们在订单方面遍布整个地方。
我做错了什么?