如何从Django中的模型中获取拥有投票权的对象?

如何从Django中的模型中获取拥有投票权的对象?,django,Django,我正在创建一个系统来对视频的评论进行评级,例如youtube,你可以对评论投票“喜欢”或“不喜欢”(1,0,带有布尔字段),如果喜欢的数量越大,这些将显示在顶部,我知道如何获取视频的评论并显示它们,但我的问题是,当我试图用每个人的投票来获得评论时: 我有这些模型: class Video(models.Model): name = models.CharField() #and more things class Comment(models.Model): text

我正在创建一个系统来对视频的评论进行评级,例如youtube,你可以对评论投票“喜欢”或“不喜欢”(1,0,带有布尔字段),如果喜欢的数量越大,这些将显示在顶部,我知道如何获取视频的评论并显示它们,但我的问题是,当我试图用每个人的投票来获得评论时:

我有这些模型:

class Video(models.Model):
    name = models.CharField()
    #and more things

class Comment(models.Model):
    text = models.TextField(max_length=250)
    video = models.ForeignKey(Video)
    user = models.ForeignKey(User)

class RatingComment(model.Model):
    comment = models.ForeignKey(Comment)
    user = models.ForeignKey(User)
    vote = models.BooleanField()
因此,在我看来,我可以通过以下方式获得视频评论:

res=Video.objects.get(别名为某物)

coms=Comment.objects.filter(video=res)

然后,我用这个值对模板进行render_to_响应。但我需要得到的评论与喜欢和不喜欢的计数

?如何创建它?

使用Queryset修饰符:

Comment.objects.select_related('ratingcomment_set').extra(
    select={
        'likes': 'SELECT COUNT(*) FROM applabel_ratingcomment WHERE applabel_ratingcomment.comment_id = applabel_comment.id and applabel_ratingcomment.vote = 1'
        'dislikes': 'SELECT COUNT(*) FROM applabel_ratingcomment WHERE applabel_ratingcomment.comment_id = applabel_comment.id and applabel_ratingcomment.vote = 0'
    },
)

+1.对于不同的数据模型,可以只使用注释: