Débutant question. Je modèles Django qui ressemblent à ceci:Question newbie Django: obtenir le nombre de ForeignKey associé, conditionnel au champ dans la table 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
Et je veux être en mesure de produire un leaderboard d'utilisateurs qui ont mises en ligne au moins une vidéo non-problème, commandé par le nombre de vidéos sans problème, ils 'ai téléchargé.
Je peux obtenir une partie du chemin avec annotate
- Je peux produire une liste ordonnée, mais je ne sais pas comment la rendre conditionnelle au champ problem_video
étant False.
leaderboard = VideoUser.objects. \
.annotate(num_submissions=Count('videosubmission')) \
.filter(num_submissions__gt=0).order_by('-num_submissions')
Quelqu'un peut-il suggérer comment l'étendre à prendre le champ problem_video
compte aussi? Peut-être que j'ai besoin d'une table de pontage ...?
Semble travailler ... Merci! – AP257