私のデータベースには、いくつかのユーザー情報を保持するテーブルがあります。テーブルが呼び出されUserBalance
、フィールドには、、user
およびcredits_in
(とりわけ)が含まcredits_out
れますremark
特定のユーザーの合計を計算しようとしてcredits_in
いますが、ケースごとに合計が異なります。これを見てください:
>>> cg = UserBalance.objects.filter(user=ranked_user).filter(remark__icontains='credits g').aggregate(sum_in=Sum('credits_in'))
>>> cg
{'sum_in': 35.85}
>>> cg = UserBalance.objects.filter(user=ranked_user).filter(Q(remark='credits gained') or Q(remark='credits given')).aggregate(sum_in=Sum('credits_in'))
>>> cg
{'sum_in': 26.16}
>>> cg = UserBalance.objects.filter(user=ranked_user).filter(Q(remark='credits given') or Q(remark='credits gained')).aggregate(sum_in=Sum('credits_in'))
>>> cg
{'sum_in': 9.69}
最初のケースでは、を使用i_cointains
し、2番目と3番目のケースでは、Q()を使用しますが、用語を切り替えています。
誰かが2番目と3番目のケースの違いを説明できますか?