gpt4 book ai didi

django 聚合聚合字段?

转载 作者:行者123 更新时间:2023-12-04 07:01:16 28 4
gpt4 key购买 nike

我有一个模型叫 Item , 与 User 的 m2m 关系(“所有者”)。
对于每个项目,我需要计算拥有它的用户。使用 annotate() 很容易
但随后我需要计算特定性别的所有者与每个项目的所有者总数之间的比率。例如,如果 5 个用户中有 2 个男性拥有该项目,则比例为 0.4 .
这样做的最佳方法是什么?

最佳答案

要使用 ORM 做到这一点,您需要条件聚合,Django 不支持这些聚合。 http://www.voteruniverse.com/Members/jlantz/blog/conditional-aggregates-in-django提出了一个可行的解决方案。
如果不需要按比例排序,那么可以调用两次annotate,然后在Python中计算出比例。就像是:

items = Item.objects.annotate(ucount=Count('users')).annotate(ccount=CountIf(<condition>))
for item in items:
item.ratio = item.ucount / item.ccount
如果您不想这样做,我建议您使用 extra()方法和一些自定义 sql 来获取您想要的额外信息。该方法的文档位于 Django Queryset API 文档页面上。

关于django 聚合聚合字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803262/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com