Django возвращает две переменные (одну связанную) в цикле for

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

Например, если кто-то нажмет на "Математика", вы увидите следующее:

teacher_name1 - Date: 20/2/2022
Other classes on the same day: Physics, History

teacher_name2 - Date: 20/2/2022
Other classes on the same day: None

Я могу получить первую часть, когда кто-то нажимает на модуль, чтобы получить список учителей на определенную дату, но я не могу получить остальные модули, которые учитель проводит в тот же день

Мои модели следующие:

class Available_Module(models.Model):
    module_name = models.CharField(max_length=100, unique=True, blank=True, null=True)
    slug = models.SlugField(max_length=255, unique=False, null=True)

class Teacher(models.Model):
    teacher_name = models.CharField(max_length=100, unique=True, blank=True, null=True)
    slug = models.SlugField(max_length=255, unique=False, null=True)

class Schedule(models.Model):
    calendar_date = models.DateField(default=date.today)
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE, null=True, related_name="available_teacher")
    module = models.ForeignKey(Available_Module, on_delete=models.CASCADE, null=True, related_name="module_item")
    created_at = models.DateTimeField(default=timezone.now)

Ниже views.py:

def teachers_listing(request, module_slug, **date_filters):
    module = Available_Module.objects.get(slug=module_slug)
    get_module_id = Available_Module.objects.get(slug = clinic_slug).id
    default_date = today
    recent_dates = Schedule.objects.order_by('calendar_date').distinct('calendar_date').filter(calendar_date__range = (today, date_range))
    date_filters = recent_dates
    available_teachers = Schedule.objects.filter(module=get_module_id, calendar_date=default_date).order_by('module')
    return render(request, 'schedule_core/available_teachers.html', {
        'available_teachers': available_teachers,
        'module': module,
        'date_filters': date_filters,
        'module_slug': module_slug
    }) 

Как я уже говорил, когда кто-то нажимает на модуль, я хочу, чтобы он видел учителя, выбранный им модуль и другие модули, которые есть у учителя в тот же день. Однако я не могу вернуть остальные модули, которые есть у учителя.

{% for available_teacher in available_teachers %}
<li>{{ available_teacher.teacher }} - Date: {{ available_teacher.calendar_date | date:"M-d" }}</li>
<p>Other classes on the same day:</p> <!-- Here I cannot get the part of the rest of the modules that the teacher is having on the same day-->
{% endfor %}

Заранее большое спасибо за помощь

Я не уверен, что правильно понимаю, но простое предложение для получения всех модулей доступных учителей таково:

# Return all teachers teaching this module
available_teachers = Schedule.objects.filter(module=module).values('teacher').distinct()
# All other modules
modules = Schedule.objects.filter(teacher__in=available_teachers).exclude(module=module)

Часть exclude заключается в том, чтобы получить "остальные" модули, кроме того, на котором пользователь кликнул.

Вернуться на верх