47 lines
1.7 KiB
Python
47 lines
1.7 KiB
Python
from django.db import models
|
|
from rbac.models import CommonModel
|
|
from django.contrib.postgres.fields import JSONField, ArrayField
|
|
# Create your models here.
|
|
|
|
|
|
class Questioncat(CommonModel):
|
|
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='是否是学科')
|
|
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(CommonModel):
|
|
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 |