Je n'ai pas beaucoup de connaissance de mysql. Mon modèle django est comme suit:Requête Mysql en vue django
class Exercise_state(models.Model):
exercise = models.ForeignKey(Exercise, blank=True, null=True)
user = models.ForeignKey(User, blank=True, null=True)
intensity_level = models.IntegerField(default='1')
progress = models.IntegerField(default='0')
current_date = models.DateField(auto_now=True)
user_rating = models.IntegerField(default='0')
Je veux récupérer le nombre de user_id de qui SATISFAIRE exercise_id = 1 correspondant intensity_level = 7 et ainsi de suite pour tous les années exercise_id jusqu'à 7. En bref, les utilisateurs qui ont atteint intensity_level = 7 tous les exercices.
J'ai écrit une requête qui est la suivante:
select count(user_id) from demo_exercise_state where
exercise_id=1 and intensity_level=7 and
exercise_id=2 and intensity_level=7 and
exercise_id=3 and intensity_level=7 and
exercise_id=4 and intensity_level=7 and
exercise_id=5 and intensity_level=7 and
exercise_id=6 and intensity_level=7 and
exercise_id=7 and intensity_level=7;
Pour autant que je peux recouper les résultats de ma base de données directement Aucun utilisateur n'a encore complété sa formation (c.-à-qui a atteint intensity_level = 7 dans tous les types d'exercice), donc il renvoie le compte comme «0».
Je suis sûr que cette requête peut être optimisée car il y a beaucoup de répétition, mais je ne sais pas comment.
Je veux également exécuter la même chose (c'est-à-dire obtenir le même résultat) dans ma vue django. Là j'ai quelque chose comme
all_exercise_finish_count = Exercise_state.objects.filter(exercise_id=1, intensity_level=7).count()
Comment est-ce que je peux refléter la même chose dans cette vue de django?
Un utilisateur peut faire un exercice avec 'intensity_level = 7' plus d'une fois? – AKS
Oui mais ce n'est pas grave car sa progression n'est pas enregistrée après intensité_level = 7 – Nitish