微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐