Django新手问题:获取相关ForeignKey的计数,条件是ForeignKey表中的字段?

时间:2010-04-07 19:55:10

标签: django

新手问题。我有Django模型,如下所示:

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字段吗?也许我需要一张桥牌......?

1 个答案:

答案 0 :(得分:2)

如果我没记错的话,

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