Я не могу фильтровать поля в модели (Django)

У меня есть модели (убрал все лишнее):

class Contract(models.Model):
    contract_number = models.IntegerField(primary_key=True)
    student = models.ForeignKey('Student', on_delete=models.CASCADE)
    lessons = models.ManyToManyField('Lesson')
class Student(models.Model):
    name = models.CharField(max_length=150)
    age = models.IntegerField()

class Lesson(models.Model):
    lesson_time = models.TimeField(verbose_name='Время урока')
    lesson_date = models.DateField(verbose_name="Дата урока")
    is_done = models.BooleanField(verbose_name="Проведен")

В моем html я использую специальную ссылку:

<a href="{%url 'stud_detail' id=student.id%}">

что приводит к url в urls.py:

path('student/<int:id>', views.one_student, name='stud_detail')

А вот и мой взгляд (снова удалены все другие модели):

def one_student(request, id):
    student = Student.objects.get(id=id)
    contracts = Contract.objects.filter(student=id)
    lessons = Lesson.objects.filter(id__in=contract)
    print(lessons)

    content = dict(student=student,
                   contracts=contracts,
                   lessons=lessons)

    return render(request, 'studbase/student_detail.html', content)

Теперь у меня 10 уроков в контракте, но по результатам фильтрации у меня только один. print(lessons) возвращает только 1 урок вместо 10 уроков.

Что я сделал не так?

Вы фильтруете Lesson таким образом, что первичный ключ каким-то образом соответствует id из Contract, но это не имеет особого смысла.

Вы можете фильтровать с помощью:

lessons = Lesson.objects.filter(contract__in=contracts)
Вернуться на верх