如何获得评论最多的记录集?

2024-04-26 13:39:04 发布

您现在位置:Python中文网/ 问答频道 /正文

请通过ORM帮助提出请求

是视频评论的模型:

class Comment(models.Model):
    user = models.ForeignKey(
        User, 
        verbose_name=u"Пользователь", 
        blank=True, 
        null=True,
    )   
    user_no_auth = models.CharField(
        verbose_name=u'Пользователь не авторизованный',
        max_length=100,
        default=None,
        null=True,
        blank=True,
    )       
    comment = HTMLField(
        verbose_name=u'Комментарий',
        max_length=50000, 
        default=None,
        blank=True,
    )   
    video_id = models.IntegerField(
        verbose_name=u'Номер видео',
        default=None,
        null=True,
        blank=True,
    )           
    date = models.DateTimeField(
        verbose_name=u'Дата создания',
        default=datetime.now(),
        auto_now=True,
    )
    last_edit_date = models.DateTimeField(
        verbose_name=u'Дата последнего редактирования',
        default=datetime.now(),
        auto_now=True,
    )       
    is_active = models.BooleanField(
        verbose_name=u'Активно',
        default=True,
    )

此模型填充为follows

我需要得到一组标识符视频_id谁有更多的总评论


Tags: name模型nonetruedefaultverbose视频models
1条回答
网友
1楼 · 发布于 2024-04-26 13:39:04

首先,您的模型定义是错误的。我在视频模型的评论模型中没有看到外键video_idas IntegerField不属于那里。应该是这样的:

既然你没有发布你的视频模型,我就编一个:

class V_Video(models.Model): # 
  name = models.CharField(max_length=100)
  # ....

class Comment(models.Model):
  video = models.ForeignKey(V_Video, related_name="video_comments")
  # .. other fields 

获取评论最多的5个视频的查询是:

videos_with_most_comments = V_Video.objects.annotate(
                                               num_comments=Count('video_comments')
                                                   ).order_by('-num_comments')[:5]

这里是cheat sheet

相关问题 更多 >