Я хочу динамически фильтровать набор запросов по какому-либо действию шаблона. например выпадающий список для учебного года, поэтому я отображаю только результаты за выбранный год. Где мне нужно определить это поведение непосредственно в представлении или отфильтровать его в шаблоне?
Я уже пытался фильтровать в представлении, но я изо всех сил пытаюсь получить правильные записи из моего режима курса. Я не знаю, как я могу получить информацию о годе из моего курса из моего уже отфильтрованного набора запросов CourseGrade. Простое course_info = Course.objects.filter(id=student_grades.course.pk)
невозможно, как я бы сделал в шаблоне.
class Course(models.Model):
import datetime
YEAR_CHOICES = []
for r in range(2000, (datetime.datetime.now().year+2)):
YEAR_CHOICES.append((r,r))
name = models.CharField(choices=course_names, max_length=32)
teacher = models.ForeignKey(Teacher, on_delete=models.SET_NULL, null=True, blank=True)
school_year = models.IntegerField(choices=YEAR_CHOICES, default=datetime.datetime.now().year)
half_year = models.IntegerField(choices=course_halfyear, default=1)
g
def __str__(self):
return self.name
class CourseGrade(models.Model):
student = models.ForeignKey(Student, on_delete=models.CASCADE)
course = models.ForeignKey(Course, on_delete=models.CASCADE)
grade = models.DecimalField(validators=[MinValueValidator(1),
MaxValueValidator(6)], null=True, blank=True, decimal_places=1, max_digits=2)
course_type = models.CharField(choices=course_types, max_length=1, null=True, blank=True)
class Meta:
unique_together = ["student", "course"]
def __str__(self):
return '{0}: {1}'.format(self.student, self.course.name)
def student_grade(request):
current_student = get_object_or_404(Student, user=request.user)
student_class = School_Class.objects.filter(student=current_student)
student_grades = CourseGrade.objects.filter(student=current_student).order_by('course')
context={'current_student': current_student, 'student_grades': student_grades, 'student_class': student_class}
return render(
request,
'bgrade/student/student_grade.html',
context)
Ожидаемым результатом будет отфильтрованный набор запросов из какого-либо ввода из шаблона. (Раскрывающийся список с доступными годами и кнопкой отправки?) Итак, если студент хочет просмотреть свои оценки за 2019 год, он может выбрать его, нажать «Отправить» и получить отфильтрованные данные.
Спасибо за любую помощь.