我搜索过,找不到办法做以下事情:
假设我们有一个Django模型,其字段为“field_a”和“field_b”.
我想以某种方式限制结果,对于每个不同的“field_a”值,从模型表中检索最多N个条目.因此,这不是切片查询集的情况,因为这不会区分“field_a”值.
让我们举一个例子:
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 举报,一经查实,本站将立刻删除。