python – Django QuerySet:限制某些字段的结果分组

搜索过,找不到办法做以下事情:

假设我们有一个Django模型,其字段为“field_a”和“field_b”.
我想以某种方式限制结果,对于每个不同的“field_a”值,从模型表中检索最多N个条目.因此,这不是切片查询集的情况,因为这不会区分“field_a”值.

PS:有一种方法可以使用sql.

让我们举一个例子:

class ExampleModel(models.Model):
    foreign = models.ForeignKey(ForeignTable)
    user = models.ForeignKey(User,related_name="user_attending")

基本上我想做以下事情:

找到具有foreign_id和user_id的特定id的所有ExampleModel.但我只想从user_id列表中找到最多3个user_id.因此,即使某个foreign_id有20个匹配的user_id,也请给我前三名.

我很感激帮助!

编辑:
似乎我的问题被误解了,所以我将提供一个例子.从:

foreign_id=1,user_id=1
foreign_id=1,user_id=2
foreign_id=1,user_id=3
foreign_id=1,user_id=4
foreign_id=2,user_id=5
foreign_id=2,user_id=6
foreign_id=2,user_id=3
foreign_id=2,user_id=2
foreign_id=3,user_id=1
foreign_id=3,user_id=9

结果是,只有一个Query集:

foreign_id=1,user_id=3
foreign_id=3,user_id=9

解决方法

尝试使用切片
为例:

ExampleModel.objects.filter(ForeignTable__id=1).order_by('id')[:3]

返回前3个对象(限制3)

相关文章

功能概要:(目前已实现功能)公共展示部分:1.网站首页展示...
大体上把Python中的数据类型分为如下几类: Number(数字) ...
开发之前第一步,就是构造整个的项目结构。这就好比作一幅画...
源码编译方式安装Apache首先下载Apache源码压缩包,地址为ht...
前面说完了此项目的创建及数据模型设计的过程。如果未看过,...
python中常用的写爬虫的库有urllib2、requests,对于大多数比...