Django: фильтр Queryset динамически при действии шаблона - PullRequest
0 голосов
/ 07 июля 2019

Я хочу динамически фильтровать набор запросов по какому-либо действию шаблона. например выпадающий список для учебного года, поэтому я отображаю только результаты за выбранный год. Где мне нужно определить это поведение непосредственно в представлении или отфильтровать его в шаблоне?

Я уже пытался фильтровать в представлении, но я изо всех сил пытаюсь получить правильные записи из моего режима курса. Я не знаю, как я могу получить информацию о годе из моего курса из моего уже отфильтрованного набора запросов 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 год, он может выбрать его, нажать «Отправить» и получить отфильтрованные данные.

Спасибо за любую помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...