2010-05-30 97 views
1

所以,這就是我想要做的。 我有一個模型的工作人員,它具有用戶模型的外鍵。我也有一個與用戶模型有外鍵的模型匹配。關於django模型的問題API

我想選擇每個員工有多少匹配。我不知道該怎麼做,到目前爲止,我只能在用戶模型中工作。從工作人員,它不會允許註釋匹配。

這是什麼工作,現在

User.objects.annotate(amount=Count("match")).filter(Q(amount__gt=0)).order_by("amount") 

而這正是我想做的事

Staff.objects.annotate(amount=Count("match")).filter(Q(amount__gt=0)).order_by("amount") 

順便說一下,有沒有什麼辦法來篩選匹配?我想通過某個列過濾匹配。

回答

1

這不會工作?

Staff.objects.annotate(ammount=Count("user__match")).filter(Q(ammount__gt=0)).order_by("ammount") 
+0

天才!非常感謝Lakshman,這正是我需要的! – Clash 2010-05-31 20:15:06

1

如果「員工」和「匹配」對用戶有外鍵,但對彼此沒有外鍵,則不存在「每個員工有多少匹配」的情況。每個用戶都有幾個員工和匹配,所以根本無法知道用戶的哪個員工與同一用戶的哪個匹配相關。

這不是Django的限制 - 它是一種邏輯限制,由您構建關係的方式強加於人。

+0

感謝您的回覆Daniel!好的,但不是選擇所有員工的用戶,然後爲這些用戶選擇所有匹配,然後應用一些過濾器和聚合? – Clash 2010-05-30 14:11:31

+0

@Clash沒有任何明智的方法,但也許你可以選擇所有員工,爲工作人員中的每個用戶獲取id,然後選擇在這些用戶id列表中具有外鍵的所有Match對象。 – 2010-05-30 14:58:24