我有一个问题,我无法从.annotate()
django 视图中的复杂调用中获得所需的所有信息。这是我的模型:
RECORD_STATUS = (
(0, "Hidden"),
(1, "Unhidden"),
(2, "Deleted"),
)
class Activity(models.Model):
event_date = models.DateTimeField()
duration = models.IntegerField(default=0)
username = models.CharField(max_length=200)
record_id = models.CharField(max_length=100)
record_status = models.IntegerField(choices=RECORD_STATUS)
record_quality = models.FloatField(default=0)
我想根据不同的 record_id 将以下值传递给我的视图模板:
- 平均质量
- 数数
- 最新事件_日期
- 总持续时间
和...
...最新状态(具有特定记录 ID 的最新 event_date 的活动状态)
使用以下查询集代码块,我已经能够按预期获得其中的大部分,但我无法获取特定record_id
. 我倾向于相信一个.extra()
电话可能是要走的路,但我似乎无法正确构建它。
record_id_details = Activity.objects.values(
'record_id',
).annotate(
ave_quality=Avg('record_quality'),
count=Count('id'),
latest_event_date=Max('event_date'),
total_duration=Sum('duration'),
# Here's where I'm going wrong
# I need the record_statuses from the most recent Activities of each record_id
latest_status=,# dont know... record_status WHERE Max(event_date) ???
).order_by(sort)
任何关于注释参数的建议都会给我我需要的东西,或者可能会帮助构建额外的命令。谢谢!