2017-09-22 18 views
0

私はプロジェクトに取り組んでおり、Django Sum()注釈が外部キーとフィールドの合計を作るときに正しく動作していないことに気付きました。Django Sum Annotation with Foreign keys

たとえば、誰かが注文できるウェブサイトにアクセスしたとき。 OrderモデルにはVisitモデルへのリンクがあります。これは、1回の訪問で複数の注文を行うことができるためです。しかし、ウェブサイトから来ていない注文にはウェブサイトの訪問はありません。これらの注文については、訪問はNULLになります。次のようにすると、計算が正しく行われません(値が大きすぎます)。

visits = visits.annotate(order_total = Sum('order__total')) 

私はAvgSumを変更すると、計算が正しく行われています。これについて論理的な説明はありますか?

+0

あなたのデータの例を表示してください。 –

+0

私はちょっと高い値が元の数の倍数であることを知りました。私はこれが別個の価値と関係していると思いますか?例:3978.30は51717.90(x13)になり、189.90は3418.20(x18)になります。 – user2621686

+0

@ user2621686元の「訪問数」クエリはどのように見えますか? –

答えて

0

from pg_utils import DistinctSum 

visits = visits.annotate(order_total = DistinctSum('order__total')) 

を使用して、それを解決Sumは、個別の値を扱うことができませんでしたが判明。