Как создать динамические модели времени в django?
Я пытаюсь построить систему управления школой на django. В ней каждый год имеет 3 семестра, каждый из которых длится 4 месяца, т.е. 2022/2023 - 1-й семестр, 2-й семестр и 3-й семестр.
Каждый семестр динамичен и переходит к следующему семестру через 4 месяца, но если это 3-й семестр, он автоматически корректирует год, добавляя год и начиная с 1-го семестра, т.е. 2023/2024, затем после завершения 3 семестров переходит к 2024/2025 при пересчете с 1-го семестра (3 × 4 месяца = год)
Кроме того, каждый студент связан с каждым семестром, так как у него зарегистрированы курсы и результаты по каждому семестру.
Система автоматически повышает уровень студентов каждого класса/уровня после 3-го семестра, так что они начинают новый уровень с 1-го семестра каждый год. Т.е. 100 уровень переходит на 200 уровень, а студенты 200 уровня переходят на 300 уровень после каждого года
Моя проблема заключается в том, как разработать логику, чтобы эффективно писать мои модели и связывать их между собой, т.е. Год - семестры - курс, зарегистрированный для каждого семестра - результаты - пользователь/студент.
Как мне создать функцию таймера из 4 месяцев для каждого семестра и года для года? Как сделать это динамическим, не трогая код или базу данных? Есть ли технологии, которые я должен добавить к django, чтобы достичь того, что я хочу? Пожалуйста, помогите мне
Для обработки таких случаев можно создать свойства модели. Предполагая, что вы уже храните данные о зачисленном годе и зачисленном уровне каждого студента, можно использовать следующую модель данных:-
class Student(models.Model):
student_uuid = models.UUIDField(max_length=50)
student_name = models.CharField(max_length=200)
enrolled_date = models.DateField(auto_now=True)
enrolled_level = models.models.IntegerField()
@property
def current_semester():
return datetime.datetime.today().month%4 + 1
@property
def current_level():
return (datetime.datetime.today().year - enrolled_date.year) + enrolled_level