【发布时间】:2014-09-17 20:38:40
【问题描述】:
有了这个模型:
class Vine(models.Model):
autor = models.ForeignKey(Viner,related_name='autor')
titulo = models.CharField(max_length=450)
estado = models.CharField(choices=ESTADOS_VINE, max_length=30)
objects = models.Manager()
custom_object = managers.VineManager()
以及投票的模型
class Voto(models.Model):
user = models.ForeignKey(MyUser)
submit_date = models.DateTimeField(auto_now_add=True)
vine = models.ForeignKey(Vine)
valoracion = models.BooleanField(default=False)
以及收藏夹的类(这还可以正常工作)
class Favorito(models.Model):
date = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='favoritos')
我在 Django 中有这个“查询”。
vines = Vine.custom_object.filter(estado=2).\
annotate(favoritosCount=Count('favoritos', distinct=True)).\
filter(voto__valoracion=False).annotate(disLikesCount=Count('voto', distinct=True))\
.annotate(likesCount=Count('voto', distinct=True)).filter(voto__valoracion=True)
但由于第一个过滤器,第二个过滤器不起作用。
基本上我想要的是获得“正面投票”-“负面投票”的总和作为一个字段并按它排序。
谁能帮帮我?
提前谢谢你
【问题讨论】:
-
向我们展示您的模型。
-
排除 Count,该查询与执行
Vine.custom_object.filter(estado=2, voto__valoracion=False, voto_valoracion=True)几乎相同,这并不像您想要的那样工作。您可能想阅读有关 chaining filters 的文档。 -
是的,如果我们看到模型会更容易。
-
嗨@danielcorreia,我刚刚用我的模型更新了这个问题。有帮助吗?