新手问题。我有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
字段吗?也许我需要一张桥牌......?
答案 0 :(得分:2)
如果我没记错的话,
leaderboard = VideoUser.objects. \
.annotate(num_submissions=Count('videosubmission')) \
.filter(num_submissions__gt=0, video__problem_video=False).order_by('-num_submissions')