Проблема с выводом оценок в таблицу Django

Я занимаюсь разработкой проекта электронного журнала. Я пытаюсь вывести оценки в таблицу, но они не отображаются. Пытался решить проблему с chatgpt, но ничего не помогает.

Код

Python

def marks(request):
    # Проверка роли и получение текущей школы
    checkschoolrole(request)
    school = getcurrentschool(request)

    # Получение параметров запроса
    group = request.GET.get("group")
    lessonname = request.GET.get("lesson")
    lesson = lessonname
    period = getcurrentperiod(request)[0]

    # Получение расписания уроков
    curs.execute("""
        SELECT `dayid`, `date` 
        FROM `timetable` 
        WHERE `lessonname` = %s AND `groupname` = %s AND `period` = %s AND `school` = %s
        ORDER BY `date` ASC
    """, [lesson, group, period, school])
    timetable_data = curs.fetchall()  # Список кортежей (dayid, date)

    if not timetable_data:
        print("no timetable_data")

    # Преобразуем данные расписания в список словарей для удобства
    timetable = [{'dayid': row[0], 'date': row[1]} for row in timetable_data]

    month_days = {
        "1": 0,
        "2": 0,
        "3": 0,
        "4": 0,
        "5": 0,
        "6": 0,
        "7": 0,
        "8": 0,
        "9": 0,
        "10": 0,
        "11": 0,
        "12": 0
    }

    days_total = 0

    for entry in timetable:
        print(entry['date'].month)
        month = datetime.date.strftime(entry['date'], "%#m")
        month_days[month] += 1
        days_total += 1

    # Получение списка учеников
    curs.execute("""
        SELECT `fullname` 
        FROM `users` 
        WHERE `groupname` = %s AND `school` = %s AND `role` = 'Ученик'
        ORDER BY `fullname`
    """, [group, school])
    students_data = curs.fetchall()  # Список кортежей (studentname,)

    if not students_data:
        print("no students data")

    students = [row[0] for row in students_data]

    # Получение оценок учеников

    curs.execute("""
        SELECT `studentname`, `dayid`, `mark` 
        FROM `marks` 
        WHERE `lessonname` = %s AND `groupname` = %s AND `period` = %s AND `school` = %s ORDER BY `date` ASC
    """, [lesson, group, period, school])
    marks_data = curs.fetchall()  # Список кортежей (studentname, dayid, mark)

    if not marks_data:
        print("no marks data")

    print(marks_data)

    # Построение словаря оценок: {studentname: {dayid: mark}}
    marks_dict = {}
    #for studentname, dayid, mark in marks_data:
    #    if studentname not in marks_dict:
    #        marks_dict[studentname] = {}
    #    marks_dict[studentname][dayid] = mark

    for i in marks_data:
        if i[0] not in marks_dict:
            marks_dict[i[0]] = {}
        marks_dict[i[0]][i[1]] = i[2]

    # Построение таблицы данных для шаблона
    table = []
    for student in students:
        student_row = {
            'name': student,
            'marks': [],
        }
        for lesson in timetable:
            dayid = lesson['dayid']
            # Получаем оценку ученика за конкретный урок
            mark = marks_dict.get(student, {}).get(dayid, '')  # Пустая строка, если оценки нет
            student_row['marks'].append(mark)
        table.append(student_row)

    # Передача данных в шаблон
    return render(request, "school/marks/index.html", context = {
        "group": group,
        "lesson": lesson,
        "lessonname": lessonname,
        "table": table,
        "tt": timetable,
        "month_days": month_days,
        "days": days_total,
        "period": period
    })

HTML-шаблон (django)

<div class="journal">
            <table>
                <thead>
                    <tr style="height: 20px;;">
                        <th rowspan="2">Ученики</th>
                        {% for month, days in month_days.items %}
                            {% if days > 0 %}
                                <th colspan="{{ days }}">{{ month|get_month_by_number }}</th>
                            {% endif %}
                        {% endfor %}
                    </tr>
                    <tr>
                        {% for lesson in tt %}
                            {% now "Y-m-d" as today %}
                            <th class="{% if lesson.date|date:"Y-m-d" == today %}today{% endif %}">
                                {{ lesson.date|date:"d" }}
                            </th>
                        {% endfor %}
                    </tr>
                </thead>
                <tbody>
                    {% for student in table %}
                        <tr style="height: 20px;">
                            <td>{{ student.name }}</td>
                            <script>
                                console.log("{{ student.marks }}");
                            </script>
                            {% for mark, schedule in student.marks|zip:tt %}
                                {% if mark %}
                                    <script>
                                        console.log("yes mark");
                                    </script>
                                    <td class="marktd">
                                        <input type="text" value="{{ mark }}" 
                                            data-date="{{ schedule.date }}" 
                                            data-dayid="{{ schedule.dayid }}" 
                                            data-student="{{ student.name }}"
                                            data-period="{{ period }}"
                                            data-group="{{ group }}">
                                    </td>
                                {% else %}
                                    <script>
                                        console.log("no mark");
                                    </script>
                                    <td class="marktd">
                                        <input type="text" value="" 
                                            data-date="{{ schedule.date }}" 
                                            data-dayid="{{ schedule.dayid }}" 
                                            data-student="{{ student.name }}"
                                            data-period="{{ period }}"
                                            data-group="{{ group }}">
                                    </td>
                                {% endif %}
                            {% endfor %}
                        </tr>
                    {% endfor %}
                </tbody>
            </table>
        </div>

Структура таблиц

*NN - NOT NULL

timetable

таблица timetable

marks

таблица marks

users

таблица users

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