【发布时间】:2017-11-10 06:55:20
【问题描述】:
我有 3 个模型:
class Store(models.Model):
title = models.CharField(u'Store_Title', max_length=100)
class OrderExtra(models.Model):
order = models.OneToOneField(Order, verbose_name=u'Order')
store = models.ForeignKey(Store)
class Order(models.Model):
code = models.IntegerField(u'Order_Code')
datetime_begin = models.DateTimeField(null=True)
datetime_end = models.DateTimeField(null=True)
我还有一个查询集,它返回我所有的商店以及每个商店的订单数:
qs = Order.objects.values('orderextra__store__title').annotate(orders_count=Count('code'))
结果我得到:
qs[0] = {'orders_count': 500, 'orderextra__store__title': u'MyTestStore 1'}
qs[1] = {'orders_count': 200, 'orderextra__store__title': u'MyTestStore 2'}
我想要的是一个 orm 查询集或本机 sql 查询,用于执行以下操作:
对于'MyTestStore 1',有500 订单,每个订单都有 datetime_begin 和 datetime_end。
对于每个500 订单,我想计算差异:diff = datetime_end - datetime_begin。
结果我会得到500 diff。
下一步是计算:diff1 + diff2 + diff3 + diff500 / 500(从所有差异中获取平均值)。
作为查询集的最终结果,我想得到:
qs[0] = {'orders_average_diff': 7.3 (minutes), 'orderextra__store__title': u'MyTestStore 1'}
qs[1] = {'orders_average_diff': 4.2 (minutes), 'orderextra__store__title': u'MyTestStore 2'}
有没有办法做到这一点?谢谢。
【问题讨论】: