Вопрос новичка. У меня есть модели 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
, являющегося ложным.
leaderboard = VideoUser.objects. \
.annotate(num_submissions=Count('videosubmission')) \
.filter(num_submissions__gt=0).order_by('-num_submissions')
Может кто-нибудь предложить, как расширить это, чтобы принять во внимание также поле problem_video
? Может быть, мне нужен соединительный стол ...?