2010-04-07 56 views
0

新手問題。我有看起來像這樣的Django模型:Django新手問題:獲取關聯ForeignKey的計數,條件是ForeignKey表中的字段?

class Video(models.Model): 
    uploaded_by = models.ForeignKey('VideoUser') 
    problem_video = models.BooleanField(default=False) 
class VideoUser(models.Model): 
    name = models.CharField(max_length=250) 
    def num_videos(self): 
     num_videos = Video.objects.filter(uploaded_by=self, problem_video=false).count() 
     return num_videos 

而且我希望能夠產生誰已經上傳至少一個非問題視頻用戶的排行榜,以非問題的影片數量排序他們已上傳。

我可以通過annotate獲得部分路徑 - 我可以生成一個有序列表,但我不知道如何使條件爲problem_video字段爲False。

leaderboard = VideoUser.objects. \ 
      .annotate(num_submissions=Count('videosubmission')) \ 
      .filter(num_submissions__gt=0).order_by('-num_submissions') 

任何人都可以建議如何擴展這個也考慮到problem_video領域嗎?也許我需要一個橋接表...?

回答

2

如果我沒有記錯,

leaderboard = VideoUser.objects. \ 
     .annotate(num_submissions=Count('videosubmission')) \ 
     .filter(num_submissions__gt=0, video__problem_video=False).order_by('-num_submissions') 
+0

似乎工作...謝謝! – AP257 2010-04-07 20:12:08

相關問題