Python Django组(按小时/天)
我有一个模型: Model.pyPython Django组(按小时/天),python,django,orm,Python,Django,Orm,我有一个模型: Model.py class DispatchPlan(models.Model): total_trucks = models.IntegerField(default=0) material_type = models.CharField(max_length=255, default=0, choices=mtypes) scheduled_date = models.DateTimeField(max_length=255, default=0)
class DispatchPlan(models.Model):
total_trucks = models.IntegerField(default=0)
material_type = models.CharField(max_length=255, default=0, choices=mtypes)
scheduled_date = models.DateTimeField(max_length=255, default=0)
offered_price = models.IntegerField(default=0)
weight = models.IntegerField(default=0)
我正试着在预定日期和体重之间画一个图表。我想根据小时和重量对时间戳进行分组。
我该怎么做
在SQl中,它就像.groupby('scheduled_date)
,但由于它是一个时间戳,我认为它不一样
应该是:
data = DispatchPlan.objects.all().groupby('scheduled_date')
我使用postgres作为我的数据库
编辑:
我试过的
dataset = DispatchPlan.objects.annotate(month=TruncMonth('scheduled_date')).values('month').annotate(c=sum('weight')).values('month', 'c')
错误:
TypeError:不支持+:“int”和“str”的操作数类型
您需要使用Django的
Sum
方法,而不是Python的Sum
。因此,请这样做:
从django.db.models导入总和
dataset=DispatchPlan.objects.annotate(月=TruncMonth('scheduled_date'))。值('month')。annotate(c=Sum('weight'))。值('month','c'))
由于您似乎希望按小时分组,因此应改用TruncHour
:
从django.db.models导入总和
从django.db.models.functions导入TruncHour
dataset=DispatchPlan.objects.Annotation(
小时=TruncHour('scheduled_date')
).价值观(
“小时”
).注释(
c=总和(“重量”)
).价值观(
“小时”,
"c",,
)
它给出了一个月的输出,我们可以得到每天或每小时的数据吗?