2013-08-06 43 views
0

的差異,我有以下型號:Django的:註解兩場

class P (models.Model): 
    title = models.CharField(max_length=100) 
    votes_up = models.ManyToManyField(User) 
    votes_down = models.ManyToManyField(User) 

有沒有辦法做這樣的事情

P.objects.annotate(rating = Count(votes_up) - Count(votes_down)).order_by('-rating') 

+0

你有沒有試過做你想做的事情? :) –

+0

是的。我得到了「不受支持的操作數類型 - :'計數'和'計數'」。 – averageman

回答

0

沒有。 您可以編寫自己的聚合函數,然後在註釋中使用它(這實在是一個糟糕的主意),或者僅僅依靠原始的sql。不過,就我個人而言,我會用非規範化的計數器來處理這個用例。

0

爲什麼你使用m2m關係來表示投票?也許改爲整數場。然後你可以有一個模型方法返回減去的數量。然後,也許你可以在模型方法上註釋。