0

我正在创建一个系统来对视频的评论进行评分,例如 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(alias__exact=something)

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

然后我用这个值对模板生成一个 render_to_response。但我需要用喜欢和不喜欢的数量来获得评论。

¿ 我怎样才能创建它?

4

1 回答 1

0

使用额外的查询集修饰符:

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'
    },
)
于 2012-11-27T17:50:46.400 回答