examtest/test_server/question/models.py

52 lines
1.9 KiB
Python

from django.db import models
from rbac.models import SoftCommonModel
from django.contrib.postgres.fields import JSONField, ArrayField
# Create your models here.
class Questioncat(SoftCommonModel):
type_choices = (
('公共', '公共'),
('专业', '专业'),
)
name = models.CharField(max_length=200, unique=True, verbose_name='名称')
pid = models.ForeignKey('self', verbose_name='', null=True, blank=True, on_delete=models.CASCADE, related_name='questioncatpid')
is_subject = models.BooleanField(default=False, verbose_name='是否是学科')
type = models.CharField(max_length=50, default='专业', choices=type_choices, verbose_name='科目类型')
class Meta:
verbose_name = '题库/学科类别'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
@property
def tmtotal(self):
return self.questioncat.count()
class Question(SoftCommonModel):
type_choices = (
('单选', '单选'),
('多选', '多选'),
('判断', '判断'),
)
level_choices = (
('', ''),
('', ''),
('', ''),
)
name = models.TextField(verbose_name='题干')
type = models.CharField(max_length=50, default='单选', choices=type_choices, verbose_name='题型')
level = models.CharField(max_length=50, default='', choices=level_choices, verbose_name='难度')
questioncat = models.ForeignKey(Questioncat, blank=True, null=True, on_delete=models.CASCADE, verbose_name='所属题库', related_name='questioncat')
options = JSONField(verbose_name='选项')
right = JSONField(verbose_name='正确答案')
resolution = models.TextField(verbose_name='解析')
class Meta:
verbose_name = '题目'
verbose_name_plural = verbose_name
def __str__(self):
return self.name