Может ли кто-нибудь, пожалуйста, помочь/сказать мне, что я делаю неправильно? И/Или что я должен был сделать в своих запросах?

#python-3.x #django #django-models #django-views #django-templates

Вопрос:

У меня есть 3 модели, на которых я использую свой запрос:

Models.py

 class Student(models.Model):
   ...

class SchoolPeriod(models.Model):
   period = models.CharField(max_length = 100)

class StudentGrade(models.Model):
   student = models.ForeignKey(Student, on_delete=models.CASCADE,)
   period = models.ForeignKey(SchoolPeriod, ...)
   subjects = models.ForeignKey(Subject, on_delete=models.CASCADE)
   grade = models.DecimalField(default = 75.00, max_digits=4, decimal_places=2)

class YearLevel(models.Model):
   year_level = models.CharField(...)
   school_level = models.CharField(...)

class Section(models.Model):
   year_level = models.OneToOneField(YearLevel, on_delete=models.SET_NULL, null = True)
   section = models.CharField(max_length = 100)
   adviser = models.ForeignKey(Teacher, on_delete = models.SET_NULL, null = True, blank = True)

class Subject(models.Model):
   subject_name = models.CharField(max_length = 100)
 

Views.py

 def viewgrade(request):
   current_parent = request.user.parent                              #gets current logged in parent
   tempstudent = Student.objects.get(parent = current_parent )       #gets student related to parent(theres no student user level)
   studentgrade = StudentGrade.objects.filter(student = tempstudent) #filters the grades of the student related to the parent logged in
   ...

   context = {
       ...
       'studentgrade': studentgrade,
   }
   return render(request, 'Information/viewgrade.html', context)
 

viewgrade.html(шаблон)

 <table style="width:50%">
 <tr>
    <th>Subject</th>
    <th>Grade</th>
 </tr>
 {% for studentgrade in studentgrade %}
 <tr>
    <td>{{ studentgrade.subjects }}</td>
    <td>{{ studentgrade.grade }}</td>
 </tr>
 {% endfor %}
 </table>
 

Что я могу сделать, так это напечатать в своем шаблоне оценки УЧЕНИКА, связанные с РОДИТЕЛЕМ, который в данный момент вошел в систему.

Но я также хочу организовать это в соответствии с периодом оценки(квартал)

пример:

 **first grading**
Science = 99
Math = 99

**second grading**
Science = 70
Match = 70
 

Спасибо за помощь!

Комментарии:

1. Что делать, если существует несколько Student s с одним и тем же parent ?

2. Можете ли вы показать нам остальную часть вашего models.py файл,я думаю, что вам нужно перебирать предметы, такие как {{для предмета в studentgrade.subjects.objects.all}}, потому что он возвращает набор запросов

3. @WillemVanOnsem тогда у меня были бы проблемы, спасибо! может быть, мне следует изменить его на getlist?

4. @MohcenCH Подойдет, я добавлю всю свою model.py

5. Я все еще застрял здесь, может кто-нибудь помочь?