2

我想将这 2 个查询合并为 1 以获取Music具有名称的对象,xyz并从流派中获取前 3 个对象10,按艺术家排序:

1. Music.objects.filter(name='xyz', genre=10)

2. Music.objects.filter(genre=10).order_by('artist')[:3]

我可以使用Q这样的对象,但我不知道如何排序和过滤Q下面的第三个对象:

Music.objects.filter( (Q(name='xyz') & Q(genre=10)) | Q(genre=10) )
4

2 回答 2

0

也许试试这样?

Music.objects.filter( (Q(name='xyz') & Q(genre=10)) | Q(genre=10) ).order_by('artist')[:3]
于 2014-08-18T19:24:06.467 回答
0

没办法,使用两个查询,但更改第二个以避免重复:

exact = Music.objects.filter(name='xyz', genre=10)
additional = Music.objects.filter(genre=10).exclude(name='xyz').order_by('artist')[:3]
do_something_with = list(exact) + list(additional)
于 2015-12-14T21:25:16.220 回答