0

我有以下模型:

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')

?

4

2 回答 2

0

没有。您要么编写自己的聚合函数,然后在注释中使用它(这确实是个坏主意),要么只是依赖原始 sql。

不过,就个人而言,我会使用非规范化计数器来处理该用例。

于 2013-08-06T13:21:23.833 回答
0

为什么要使用 m2m 关系来代表选票?也许改为将其更改为整数字段。然后你可以有一个返回减去金额的模型方法。然后也许您可以在模型方法上进行注释。

于 2013-08-07T01:33:49.457 回答