请通过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
我需要获得一组标识符video_id,他们的评论总数更多
答案 0 :(得分:0)
首先,您的模型定义是错误的。我没有在视频模型的评论模型中看到ForeignKey。 video_id
因为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