models
This commit is contained in:
0
surveys/__init__.py
Normal file
0
surveys/__init__.py
Normal file
3
surveys/admin.py
Normal file
3
surveys/admin.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
6
surveys/apps.py
Normal file
6
surveys/apps.py
Normal file
@@ -0,0 +1,6 @@
|
||||
from django.apps import AppConfig
|
||||
|
||||
|
||||
class SurveysConfig(AppConfig):
|
||||
default_auto_field = 'django.db.models.BigAutoField'
|
||||
name = 'surveys'
|
||||
143
surveys/migrations/0001_initial.py
Normal file
143
surveys/migrations/0001_initial.py
Normal file
@@ -0,0 +1,143 @@
|
||||
# Generated by Django 4.2.21 on 2025-05-18 18:14
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='EducationalInstitution',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=256, verbose_name='Название учреждения')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Образовательное учреждение',
|
||||
'verbose_name_plural': 'Образовательные учреждения',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Profession',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=256, verbose_name='Название профессии')),
|
||||
('description', models.TextField(blank=True, null=True, verbose_name='Описание')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Профессия',
|
||||
'verbose_name_plural': 'Профессии',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ScoreVariable',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=30, verbose_name='Имя переменной')),
|
||||
('title', models.CharField(max_length=70, verbose_name='Название переменной')),
|
||||
('description', models.TextField(verbose_name='Описание')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Переменная оценки',
|
||||
'verbose_name_plural': 'Переменные оценки',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Survey',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(max_length=70, verbose_name='Название опроса')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Опрос',
|
||||
'verbose_name_plural': 'Опросы',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Statement',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('statement', models.CharField(max_length=256, verbose_name='Утверждение')),
|
||||
('score_variable', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='surveys.scorevariable', verbose_name='Переменная оценки')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Утверждение',
|
||||
'verbose_name_plural': 'Утверждения',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Specialty',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=256, verbose_name='Название специальности')),
|
||||
('link', models.URLField(blank=True, null=True, verbose_name='Ссылка')),
|
||||
('institution', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.educationalinstitution', verbose_name='Образовательное учреждение')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Специальность',
|
||||
'verbose_name_plural': 'Специальности',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='scorevariable',
|
||||
name='survey',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.survey', verbose_name='Опрос'),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='QuestionPair',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('statement_a', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='pair_a', to='surveys.statement', verbose_name='Утверждение A')),
|
||||
('statement_b', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='pair_b', to='surveys.statement', verbose_name='Утверждение B')),
|
||||
('survey', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.survey', verbose_name='Опрос')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Пара вопросов',
|
||||
'verbose_name_plural': 'Пары вопросов',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ProfessionTestResult',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('profession', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.profession', verbose_name='Профессия')),
|
||||
('survey_score_variable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.scorevariable', verbose_name='Переменная оценки')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Результат теста по профессии',
|
||||
'verbose_name_plural': 'Результаты тестов по профессиям',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AgreementQuestion',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('question', models.CharField(max_length=256, verbose_name='Вопрос')),
|
||||
('score_variable', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.scorevariable', verbose_name='Переменная оценки')),
|
||||
('survey', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.survey', verbose_name='Опрос')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Вопрос на согласие',
|
||||
'verbose_name_plural': 'Вопросы на согласие',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ProfessionSpecialtyLink',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('profession', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.profession', verbose_name='Профессия')),
|
||||
('specialty', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='surveys.specialty', verbose_name='Специальность')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Связь между профессией и специальностью',
|
||||
'verbose_name_plural': 'Связи между профессиями и специальностями',
|
||||
'unique_together': {('profession', 'specialty')},
|
||||
},
|
||||
),
|
||||
]
|
||||
0
surveys/migrations/__init__.py
Normal file
0
surveys/migrations/__init__.py
Normal file
151
surveys/models.py
Normal file
151
surveys/models.py
Normal file
@@ -0,0 +1,151 @@
|
||||
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 = "Результаты тестов по профессиям"
|
||||
|
||||
3
surveys/tests.py
Normal file
3
surveys/tests.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.test import TestCase
|
||||
|
||||
# Create your tests here.
|
||||
3
surveys/views.py
Normal file
3
surveys/views.py
Normal file
@@ -0,0 +1,3 @@
|
||||
from django.shortcuts import render
|
||||
|
||||
# Create your views here.
|
||||
Reference in New Issue
Block a user