に平均に注釈を付けます。私はこれが機能することが期待:Djangoは、私はこれらのモデルを持っているモデルフィールド
Feedback.objects.annotate(avg_rating=Avg('rating')).values('rating', 'avg_rating')
が、それはちょうどこの出力:
<QuerySet [{'rating': 0.8, 'avg_rating': 0.8}, {'rating': 0.2, 'avg_rating': 0.2}, {'rating': 0.6, 'avg_rating': 0.6}, {'rating': 1.0, 'avg_rating': 1.0}, {'rating': 0.4, 'avg_rating': 0.4}]>
あなたは平均が3.0である必要があります見ることができるように。どこが間違っていますか?明確さのビットのために
は、私はこのような何かをしようとしている:agencies = Agency.objects.annotate(
avg_rating=Coalesce(Subquery(
Feedback.objects.filter(user__agency_id=OuterRef('pk'))
.values('rating')
.annotate(avg_rating=Avg('rating', output_field=DecimalField()))
.values('avg_rating')
), 0)
)
を平均評価機関ごとです。何か案は?
あなたは、特定のユーザーの平均評価を見つけるためにしようとしていますか?または、ある代理店に所属するすべてのユーザーですか?あなたは、ユースケースが何であるかを言葉で説明できますか? –