我有以下Django的數據庫型號:Django模型:總金額在多個外鍵字段值
class Entry(models.Model):
author = models.ForeignKey(User);
target = models.ForeignKey(User);
points = models.IntegerField(default=0);
用戶可以給其他用戶點。目標是計算每個用戶元組的點數總和。顯而易見的方法是使用迭代,但這會導致許多不必要的查詢。雖然這是一個相當簡單的SQL查詢,但我無法讓它與djangos API一起工作。我玩了annonate,聚合和Q過濾器,但無法達到預期的效果。
最好的結果會是這樣的:
[{'user_one_pk': 1, 'user_two_pk': 2, 'sum__points': 6},
{'user_one_pk': 1, 'user_two_pk': 3, 'sum__points': -3},
{'user_one_pk': 2, 'user_two_pk': 3, 'sum__points': 9}]
編輯:澄清獨特的元組的編輯結果。
最好的辦法是做它在數據庫中。寫一個簡單的函數,它是否 – Mox