python – Django QuerySet:限制某些字段的结果分组
发布时间:2020-12-20 13:43:51 所属栏目:Python 来源:网络整理
导读:我搜索过,找不到办法做以下事情: 假设我们有一个Django模型,其字段为“field_a”和“field_b”. 我想以某种方式限制结果,对于每个不同的“field_a”值,从模型表中检索最多N个条目.因此,这不是切片查询集的情况,因为这不会区分“field_a”值. PS:有一种方法
我搜索过,找不到办法做以下事情:
假设我们有一个Django模型,其字段为“field_a”和“field_b”. 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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |