from django.db import models from core.models import ContactMixin # Предполагается, что ContactMixin находится в приложении core from employees.models import Employee # Предполагается, что модель Employee находится в приложении employees from users.models import Account # Предполагается, что модель Account находится в приложении users ## Учебный процесс (название приложения: education) class AcademicYear(models.Model): year = models.CharField(max_length=9, verbose_name="Год") # Например, "2023-2024" def __str__(self): return self.year class Meta: verbose_name = "Учебный год" verbose_name_plural = "Учебные годы" class Department(models.Model): name = models.CharField(max_length=100, verbose_name="Название отделения") def __str__(self): return self.name class Meta: verbose_name = "Учебное отделение" verbose_name_plural = "Учебные отделения" class DepartmentHead(models.Model): department = models.ForeignKey( Department, on_delete=models.CASCADE, verbose_name="Учебное отделение" ) head = models.OneToOneField( Employee, on_delete=models.CASCADE, verbose_name="Руководитель" ) def __str__(self): return f"{self.head} - {self.department}" class Meta: verbose_name = "Руководитель отделения" verbose_name_plural = "Руководители отделений" unique_together = ("department", "head") class Specialty(models.Model): name = models.CharField(max_length=200, verbose_name="Название специальности") code = models.CharField(max_length=20, verbose_name="Код специальности") department = models.ForeignKey( Department, on_delete=models.CASCADE, verbose_name="Учебное отделение" ) def __str__(self): return f"{self.code} - {self.name}" class Meta: verbose_name = "Специальность" verbose_name_plural = "Специальности" class Group(models.Model): name = models.CharField(max_length=20, verbose_name="Название группы") curator = models.ForeignKey( Employee, on_delete=models.SET_NULL, null=True, blank=True, verbose_name="Куратор" ) specialty = models.ForeignKey( Specialty, on_delete=models.CASCADE, verbose_name="Специальность" ) def __str__(self): return self.name class Meta: verbose_name = "Группа" verbose_name_plural = "Группы" class Student(ContactMixin): group = models.ForeignKey( Group, on_delete=models.CASCADE, verbose_name="Группа" ) account = models.OneToOneField( Account, on_delete=models.CASCADE, unique=True, verbose_name="Аккаунт" ) def __str__(self): return f"{self.last_name} {self.first_name} - {self.group}" class Meta: verbose_name = "Студент" verbose_name_plural = "Студенты"