Got classes of Student, StudentGroup, Pair(double lesson), Mark and a queryset:
class Student(models.Model):
student_group = models.ForeignKey("StudentGroup", ...)
...
class StudentGroup(models.Model):
...
class Pair(models.Model):
pair_time = models.TimeField(...)
pair_date = models.DateField(...)
student_group = models.ForeignKey("StudentGroup", ...)
...
class Mark(models.Model):
student = models.ForeignKey("Student", ...)
pair = models.ForeignKey("Pair", ...)
queryset = (
Student.objects
.select_related("student_group")
.prefetch_related(
Prefetch(
"student_group__pairs",
queryset=(
Pair.objects
.order_by("-pair_date", "pair_time")
.select_related("subject")
.prefetch_related(
Prefetch(
"marks",
# This is what I need to filter.
queryset=Mark.objects.filter(student_id=**???**),
to_attr="student_marks"
)
)
.all()
),
to_attr="student_pairs"
)
)
.all()
)
I need to filter marks by student_id. How can I do it? Tried F, Q, Subquery, but I can’t get how to use’em.