2014-11-22 20 views
-1

請通過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的誰擁有更多的總評論

+2

歡迎的StackOverflow!請閱讀StackOverflow的[如何提問]文章(http://stackoverflow.com/help/how-to-ask)。還可以嘗試將代碼示例限制爲演示您的問題所需的最小代碼。 – vgoff 2014-11-22 15:17:35

回答

0

首先,你的模型定義是錯誤的。我在視頻模型的評論模型中看不到ForeignKey。 video_id as 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