Всем привет!
Подготовил модели для приложения. Отдаю на критику.
Пишу систему тестирования знаний. Должны быть вопросы, ответы, ссылки на нормативные документы, протокол ответов, разделение по специализациям..
Если кривая логика или реализация, пишите! Нужно Ваше мнение. Спасибо!
from django.db import models
class ND(models.Model):
nd_sign = models.CharField(
'Обозначение (шифр) НД', max_length=200, blank=True, null=True,
unique=True)
nd_title = models.CharField(
'Название НД', max_length=500, blank=False, null=False, unique=False)
actual = models.BooleanField('Еще действителен?', default=True)
oif_link = models.URLField(
'Ссылка ОИФ', max_length=500, blank=True, null=True, unique=True)
class Meta:
ordering = ['nd_sign', 'nd_title']
verbose_name = 'Нормативный документ'
verbose_name_plural = 'Нормативные документы'
def __str__(self):
return '{} {}'.format(self.nd_sign, self.nd_title)
class Specializing(models.Model):
department = models.CharField(
'Отдел', max_length=100, blank=False, null=False, unique=True)
class Meta:
ordering = ['department']
verbose_name = 'Специализация'
verbose_name_plural = 'Специализации'
def __str__(self):
return self.department
class Question(models.Model):
question = models.TextField('Текст вопроса', blank=False, null=False)
nd = models.ForeignKey(ND, null=True, blank=True,
verbose_name='Нормативный документ',
related_name='questions')
nd_text = models.TextField('Текст пункта НД', blank=True, null=True)
specializing = models.ForeignKey(
Specializing, null=False, blank=False, verbose_name='Специализация',
related_name='questions')
class Meta:
ordering = ['nd']
verbose_name = 'Вопрос'
verbose_name_plural = 'Вопросы'
def __str__(self):
return self.question
class Answer(models.Model):
question = models.ForeignKey(
Question, null=False, blank=False, verbose_name='Ответ',
related_name='answers')
answer = models.TextField('Текст ответа', blank=False, null=False)
right = models.BooleanField('Верный ответ', default=False)
class Meta:
ordering = ['question']
verbose_name = 'Ответ'
verbose_name_plural = 'Ответы'
def __str__(self):
return self.answer
class AnswerTry(models.Model):
user = models.CharField('Пользователь', max_length=200,
blank=False, null=False, unique=True)
question = models.ForeignKey(
Question, null=False, blank=False, verbose_name='Ответ',
related_name='answer_tries')
answer = models.ForeignKey(
Answer, null=False, blank=False, verbose_name='Ответ',
related_name='answer_tries')
right = models.BooleanField('Ответил правильно', default=False)
date_try = models.DateTimeField('Дата ответа', auto_now_add=True)
class Meta:
ordering = ['-date_try']
verbose_name = 'Попытка'
verbose_name_plural = 'Попытки'
def __str__(self):
return '{} {} {}'.format(self.user, self.date_try, self.right)