我有以下任务: 获取按5分钟的时间间隔分组的属性的所有SUM。
我知道如何在(My)SQL中执行此操作,但不能使用Django模型ORM系统。
以下MySQL查询工作正常:
SELECT DATE_FORMAT(
MIN(createdAt),
'%d/%m/%Y %H:%i:00'
) as adjusted_date,SUM(number_of_items), COUNT(id) FROM app_model GROUP BY ROUND(UNIX_TIMESTAMP(app_model.createdAt) DIV 300);
到目前为止,我有以下Django代码:
MyModel.objects.filter(my_attribute=my_value).order_by(
"mymodel.createdAt").extra({'minute': 'minute(mymodel.createdAt)'}).values("minute").annotate(
TotalAmount=models.Sum("number_of_items"))
Django结果的问题在于,每分钟都在进行。这意味着,如果在同一分钟内有5行,它将返回该行的5倍。此外,没有“真正的5分钟”间隔。
我正在使用MySQL,Python 3.6.5和Django 2.0.6
例如,这是模型:
class BaseModel(models.Model):
uuid = models.UUIDField(unique=True, default=uuid.uuid4, editable=False, verbose_name='UUID')
number_of_items = models.DecimalField(default=0, decimal_places=10, max_digits=16)
createdAt = models.DateTimeField(auto_now_add=True, auto_now=False, editable=False, verbose_name=_('created'))
updatedAt = models.DateTimeField(auto_now=True, editable=False, verbose_name=_('updated'))