我有以下型号:
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)
不。 你要么编写自己的聚合函数,然后在注释中使用它(这实际上是一个坏主意),或者只是依赖原始的sql。
就个人而言,我会使用非规范化计数器处理该用例。
答案 1 :(得分:0)
为什么使用m2m关系来表示投票?也许改为整数字段。然后你可以有一个返回减去量的模型方法。然后也许你可以在模型方法上注释。