【发布时间】:2021-09-23 03:57:32
【问题描述】:
class Order(models.Model):
product = models.ForeignKey(Product, on_delete=models.CASCADE)
category = models.ForeignKey(
Category, null=True, on_delete=models.SET_NULL
)
user = models.ForeignKey(User, null=True, on_delete=models.SET_NULL)
placed = models.DateTimeField(auto_now=True)
shipped = models.DateTimeField(null=True)
delivered = models.DateTimeField(null=True)
我想计算每个类别的订单处理速度的统计数据
其中处理时间为delivered - shipped
结果我想实现这样的目标:
[
{
"category": <category 1>
"processed_time": <average processed time in seconds>
},
{
"category": <category 2>
"processed_time": <average processed time in seconds>
},
{
"category": <category 3>
"processed_time": <average processed time in seconds>
},
]
我可以在 ORM 之外进行计算,但我想通过注释/聚合以某种方式实现这一点
delivered = delivered_qs.annotate(first_processed=Min("delivered"), last_processed=Max("delivered")) \
.aggregate(processed_time=F("last_processed")-F("first_processed"))
这个 QS 只返回所有类别的时间,我不知道如何检索每个单独类别的时间
【问题讨论】:
标签: django postgresql django-models django-orm