.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 に基づいて次の値をビュー テンプレートに渡したいと思います。
- 平均的な品質
- カウント
- 最新のイベント日付
- 合計期間
と...
...latest status (特定の record_id の最新の event_date を持つ Activity のステータス)
次のクエリセット コードチャンクを使用して、これらのほとんどを意図したとおりに取得できましたが、特定の .xml の最新のステータスを取得できません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)
私が必要とするものを私に与える注釈引数に関するアドバイス、またはおそらく追加のコマンドを構築するための助けをいただければ幸いです。ありがとう!