From ba4df6674b04ad3442331eb58f4affde283b3e6d Mon Sep 17 00:00:00 2001 From: Mikan <72257910+Mikan-DS@users.noreply.github.com> Date: Sun, 18 May 2025 23:05:48 +0300 Subject: [PATCH] full admin --- surveys/admin.py | 103 +++++++++++++++++++++++++++++++++++++++++++++- surveys/apps.py | 1 + surveys/models.py | 12 +++++- 3 files changed, 114 insertions(+), 2 deletions(-) diff --git a/surveys/admin.py b/surveys/admin.py index 8c38f3f..32faec9 100644 --- a/surveys/admin.py +++ b/surveys/admin.py @@ -1,3 +1,104 @@ from django.contrib import admin +from .models import ( + Survey, ScoreVariable, Statement, QuestionPair, AgreementQuestion, + EducationalInstitution, Profession, Specialty, ProfessionSpecialtyLink, ProfessionTestResult +) -# Register your models here. + +class ScoreVariableInline(admin.TabularInline): + model = ScoreVariable + extra = 1 + + +class QuestionPairInline(admin.TabularInline): + model = QuestionPair + extra = 1 + autocomplete_fields = ('statement_a', 'statement_b') + + +class AgreementQuestionInline(admin.TabularInline): + model = AgreementQuestion + extra = 1 + autocomplete_fields = ('score_variable',) + + +@admin.register(Survey) +class SurveyAdmin(admin.ModelAdmin): + list_display = ('title',) + search_fields = ('title',) + inlines = [ScoreVariableInline, QuestionPairInline, AgreementQuestionInline] + + +@admin.register(ScoreVariable) +class ScoreVariableAdmin(admin.ModelAdmin): + list_display = ('title', 'survey', 'name') + list_filter = ('survey',) + search_fields = ('title', 'name', 'description') + autocomplete_fields = ('survey',) + + +@admin.register(Statement) +class StatementAdmin(admin.ModelAdmin): + list_display = ('statement', 'score_variable') + list_filter = ('score_variable__survey',) + search_fields = ('statement', 'score_variable__title') + autocomplete_fields = ('score_variable',) + + +@admin.register(QuestionPair) +class QuestionPairAdmin(admin.ModelAdmin): + list_display = ('survey', 'statement_a', 'statement_b') + list_filter = ('survey',) + search_fields = ('statement_a__statement', 'statement_b__statement') + autocomplete_fields = ('survey', 'statement_a', 'statement_b') + + +@admin.register(AgreementQuestion) +class AgreementQuestionAdmin(admin.ModelAdmin): + list_display = ('question', 'survey', 'score_variable') + list_filter = ('survey',) + search_fields = ('question', 'score_variable__title') + autocomplete_fields = ('survey', 'score_variable') + + +@admin.register(EducationalInstitution) +class EducationalInstitutionAdmin(admin.ModelAdmin): + list_display = ('name',) + search_fields = ('name',) + + +@admin.register(Profession) +class ProfessionAdmin(admin.ModelAdmin): + list_display = ('name',) + search_fields = ('name', 'description') + + +class ProfessionSpecialtyLinkInline(admin.TabularInline): + model = ProfessionSpecialtyLink + extra = 1 + autocomplete_fields = ('specialty',) + + +@admin.register(Specialty) +class SpecialtyAdmin(admin.ModelAdmin): + list_display = ('name', 'institution', 'link') + list_filter = ('institution',) + search_fields = ('name', 'institution__name') + inlines = [ProfessionSpecialtyLinkInline] + autocomplete_fields = ('institution',) + + +@admin.register(ProfessionSpecialtyLink) +class ProfessionSpecialtyLinkAdmin(admin.ModelAdmin): + list_display = ('profession', 'specialty') + list_filter = ('profession',) + search_fields = ('profession__name', 'specialty__name') + autocomplete_fields = ('profession', 'specialty') + + +@admin.register(ProfessionTestResult) +class ProfessionTestResultAdmin(admin.ModelAdmin): + list_display = ('profession', 'survey_score_variable') + list_filter = ('profession',) + search_fields = ('profession__name', 'survey_score_variable__title') + autocomplete_fields = ('profession', 'survey_score_variable') diff --git a/surveys/apps.py b/surveys/apps.py index 840a0c6..22b9085 100644 --- a/surveys/apps.py +++ b/surveys/apps.py @@ -4,3 +4,4 @@ from django.apps import AppConfig class SurveysConfig(AppConfig): default_auto_field = 'django.db.models.BigAutoField' name = 'surveys' + verbose_name = "Анкетирование и Тестирование" diff --git a/surveys/models.py b/surveys/models.py index e348002..bc51ea5 100644 --- a/surveys/models.py +++ b/surveys/models.py @@ -1,5 +1,6 @@ from django.db import models + ## Модуль Анкетирование (название приложения: surveys) class Survey(models.Model): @@ -11,6 +12,7 @@ class Survey(models.Model): class Meta: verbose_name = "Опрос" verbose_name_plural = "Опросы" + ordering = ["title"] class ScoreVariable(models.Model): @@ -27,6 +29,7 @@ class ScoreVariable(models.Model): class Meta: verbose_name = "Переменная оценки" verbose_name_plural = "Переменные оценки" + ordering = ["survey", "name", "title"] class Statement(models.Model): @@ -41,6 +44,7 @@ class Statement(models.Model): class Meta: verbose_name = "Утверждение" verbose_name_plural = "Утверждения" + ordering = ["statement", "score_variable"] class QuestionPair(models.Model): @@ -60,6 +64,7 @@ class QuestionPair(models.Model): class Meta: verbose_name = "Пара вопросов" verbose_name_plural = "Пары вопросов" + ordering = ["survey", "statement_a", "statement_b"] class AgreementQuestion(models.Model): @@ -77,6 +82,7 @@ class AgreementQuestion(models.Model): class Meta: verbose_name = "Вопрос на согласие" verbose_name_plural = "Вопросы на согласие" + ordering = ["survey", "question"] class EducationalInstitution(models.Model): @@ -88,6 +94,7 @@ class EducationalInstitution(models.Model): class Meta: verbose_name = "Образовательное учреждение" verbose_name_plural = "Образовательные учреждения" + ordering = ["name"] class Profession(models.Model): @@ -100,6 +107,7 @@ class Profession(models.Model): class Meta: verbose_name = "Профессия" verbose_name_plural = "Профессии" + ordering = ["name"] class Specialty(models.Model): @@ -115,6 +123,7 @@ class Specialty(models.Model): class Meta: verbose_name = "Специальность" verbose_name_plural = "Специальности" + ordering = ["name", "institution"] class ProfessionSpecialtyLink(models.Model): @@ -132,6 +141,7 @@ class ProfessionSpecialtyLink(models.Model): verbose_name = "Связь между профессией и специальностью" verbose_name_plural = "Связи между профессиями и специальностями" unique_together = ("profession", "specialty") + ordering = ["profession", "specialty"] class ProfessionTestResult(models.Model): @@ -148,4 +158,4 @@ class ProfessionTestResult(models.Model): class Meta: verbose_name = "Результат теста по профессии" verbose_name_plural = "Результаты тестов по профессиям" - + ordering = ["profession", "survey_score_variable"]