from django.db import models ## Модуль Анкетирование (название приложения: surveys) class Survey(models.Model): title = models.CharField(max_length=70, verbose_name="Название опроса") def __str__(self): return self.title class Meta: verbose_name = "Опрос" verbose_name_plural = "Опросы" class ScoreVariable(models.Model): name = models.CharField(max_length=30, verbose_name="Имя переменной") title = models.CharField(max_length=70, verbose_name="Название переменной") description = models.TextField(verbose_name="Описание") survey = models.ForeignKey( Survey, on_delete=models.CASCADE, verbose_name="Опрос" ) def __str__(self): return f"{self.title} ({self.survey})" class Meta: verbose_name = "Переменная оценки" verbose_name_plural = "Переменные оценки" class Statement(models.Model): statement = models.CharField(max_length=256, verbose_name="Утверждение") score_variable = models.ForeignKey( ScoreVariable, on_delete=models.SET_NULL, blank=True, null=True, verbose_name="Переменная оценки" ) def __str__(self): return self.statement class Meta: verbose_name = "Утверждение" verbose_name_plural = "Утверждения" class QuestionPair(models.Model): survey = models.ForeignKey( Survey, on_delete=models.CASCADE, verbose_name="Опрос" ) statement_a = models.OneToOneField( Statement, on_delete=models.CASCADE, related_name="pair_a", verbose_name="Утверждение A" ) statement_b = models.OneToOneField( Statement, on_delete=models.CASCADE, related_name="pair_b", verbose_name="Утверждение B" ) def __str__(self): return f"Пара: {self.statement_a} - {self.statement_b}" class Meta: verbose_name = "Пара вопросов" verbose_name_plural = "Пары вопросов" class AgreementQuestion(models.Model): survey = models.ForeignKey( Survey, on_delete=models.CASCADE, verbose_name="Опрос" ) question = models.CharField(max_length=256, verbose_name="Вопрос") score_variable = models.ForeignKey( ScoreVariable, on_delete=models.CASCADE, verbose_name="Переменная оценки" ) def __str__(self): return self.question class Meta: verbose_name = "Вопрос на согласие" verbose_name_plural = "Вопросы на согласие" class EducationalInstitution(models.Model): name = models.CharField(max_length=256, verbose_name="Название учреждения") def __str__(self): return self.name class Meta: verbose_name = "Образовательное учреждение" verbose_name_plural = "Образовательные учреждения" class Profession(models.Model): name = models.CharField(max_length=256, verbose_name="Название профессии") description = models.TextField(blank=True, null=True, verbose_name="Описание") def __str__(self): return self.name class Meta: verbose_name = "Профессия" verbose_name_plural = "Профессии" class Specialty(models.Model): name = models.CharField(max_length=256, verbose_name="Название специальности") institution = models.ForeignKey( EducationalInstitution, on_delete=models.CASCADE, verbose_name="Образовательное учреждение" ) link = models.URLField(verbose_name="Ссылка", null=True, blank=True) def __str__(self): return f"{self.name} ({self.institution})" class Meta: verbose_name = "Специальность" verbose_name_plural = "Специальности" class ProfessionSpecialtyLink(models.Model): profession = models.ForeignKey( Profession, on_delete=models.CASCADE, verbose_name="Профессия" ) specialty = models.ForeignKey( Specialty, on_delete=models.CASCADE, verbose_name="Специальность" ) def __str__(self): return f"{self.profession} - {self.specialty}" class Meta: verbose_name = "Связь между профессией и специальностью" verbose_name_plural = "Связи между профессиями и специальностями" unique_together = ("profession", "specialty") class ProfessionTestResult(models.Model): profession = models.ForeignKey( Profession, on_delete=models.CASCADE, verbose_name="Профессия" ) survey_score_variable = models.ForeignKey( ScoreVariable, on_delete=models.CASCADE, verbose_name="Переменная оценки" ) def __str__(self): return f"{self.profession} - {self.survey_score_variable}" class Meta: verbose_name = "Результат теста по профессии" verbose_name_plural = "Результаты тестов по профессиям"