django模型过滤器订购

时间:2013-02-09 16:16:42

标签: python django orm

我做了这样的事情:

Player.objects.distinct().filter(Q(game1_set=game) | Q(game2_set=game))

返回播放game的所有玩家。我想要对结果进行排序,例如首先在过滤器中game1_set,然后是game2_set。但事实并非如此。它由id订购。

另外,我需要一个QuerySet结果,因此,合并两个列表不是一个选项。

以下是models.py以便更好地理解:

class Player(models.Model):
    game1_set = models.ManyToManyField('Game', verbose_name='players1')
    game2_set = models.ManyToManyField('Game', verbose_name='players2')

class Game(models.Model):
    # some fields here

1 个答案:

答案 0 :(得分:2)

尝试添加.order_by('game1_set','game2_set')

Player.objects.distinct().filter(Q(game1_set=game) | Q(game2_set=game)).order_by('game1_set','game2_set')