该问题是对this one的跟进。
我正在MySQL(实际上是MariaDB)数据库之上运行Django应用程序。
我的Django模型如下所示:
from django.db import models
from django.db.models import Count, Sum
class myModel(models.Model):
my_string = models.CharField(max_length=32,)
my_date = models.DateTimeField()
@staticmethod
def get_stats():
logger.info(myModel.objects.values('my_string').annotate(
count=Count("my_string"),
sum1=Sum('my_date'),
sum2=Sum(# WHAT GOES HERE?? #),
)
)
当我呼叫
get_stats
时,它会给我计数和sum1。但是,对于
sum2
,我希望每个匹配行的以下数据库表达式的总和:my_date + 0
(将其转换为真实的整数值)。为了在
sum2
中返回该总和,我应该在上面的表达式中添加什么?将其更改为
sum2=Sum(F('my_date'))
时,出现以下异常:http://gist.github.com/saqib-zmi/50bf572a972bae5d2871 最佳答案
不确定,但是尝试F() expression
from datetime import timedelta
myModel.objects.annotate(
count=Count("my_string"),
sum1=Sum('my_date'),
sum2=Sum(F('my_date') + timedelta(days=1))
).values('my_string', 'count', 'sum1', 'sum2')
https://docs.djangoproject.com/en/dev/ref/models/queries/#f-expressions