bonjour tout le monde,

Tout d'abords, je vous donne mes models :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
class Category(models.Model):
    name = models.CharField(max_length=32, unique=True)
 
    def __str__(self):
        return self.name
 
 
class Student(models.Model):
    class Meta:
        ordering = ('last_name',)
 
    first_name = models.CharField(max_length=32)
    last_name = models.CharField(max_length=32)
    category = models.ManyToManyField(Category, through="CategoryStudent")
 
    def __str__(self):
        return f'{self.first_name} {self.last_name}'
 
 
class CategoryStudent(models.Model):
    student = models.ForeignKey(Student, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    notes = models.PositiveIntegerField()

J'ai un souci avec une requête dans la vue. Ce que je souhaiterai faire, c'est de récupérer si possible en une seule requête, la liste de tous les élèves qui ont une note dans le cours d'anglais.

Comment puis je obtenir la valeur du champ "notes" ? Pour le moment, j'ai fait ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
def temp(request):
    rows = Student.objects.filter(category__name="Anglais")
    print('>>>', rows) #j'obtiens bien quelque chose
    for row in rows:
        print('>>>> ', row.notes)
 
    return HttpResponse('yey')
J'ai une belle erreur lorsque j'essaie d'accéder au champs notes. L'erreur est :
AttributeError at /

'Student' object has no attribute 'notes'
Dans le template, est il possible aussi de récupérer cet attribut ? (Là, j'ai renvoyé une simple réponse http. Sinon, comment ça se passe ?)

Par avance, je vous remercie infiniment de votre aide.
prenez soin de vous et je vous souhaite une très belle journée