models.py
class Orders(models.Model):
orderid = models.IntegerField(db_column='orderID', primary_key=True)
pickupdate = models.DateField(db_column='pickupDate', blank=True, null=True)
returndate = models.DateField(db_column='returnDate', blank=True, null=True)
我想为每一行用pickupdate(returndate-pickupdate)减去返回日期,然后将它们添加到整个表中
我尝试了下面的代码,但是产生了很大的十进制数字。
Orders.objects.aggregate(days=Sum( F('returndate') - F('pickupdate') )
我也尝试了下面的代码,但产生了错误
Orders.objects.aggregate(days=Sum( 'returndate' - 'pickupdate' )
答案 0 :(得分:0)
您介意重复数天吗?如果不是,则可以使用一个范围来获取每一行pickupdate
和returndate
之间的总天数...
days = 0
for rec in Orders.objects.all():
for n in range(int((rec.returndate - rec.pickupdate).days)+1):
days += 1
+1
是否取决于您要包含式计数(包括开始/结束日期)还是排他性计数(不包括结束日期)。
答案 1 :(得分:0)
您可以尝试
Orders.objects.annotate(diff=F('returndate') - F('pickupdate')).aggregate(days=Sum('diff'))