52 lines
2.4 KiB
Python
52 lines
2.4 KiB
Python
from django.db import models
|
|
from rbac.models import SoftCommonModel, CommonModel
|
|
from django.contrib.postgres.fields import JSONField, ArrayField
|
|
from question.models import Questioncat, Question
|
|
|
|
|
|
|
|
# Create your models here.
|
|
class TestRule(SoftCommonModel):
|
|
name = models.CharField(max_length=200, unique=True, verbose_name='名称')
|
|
danxuan_count = models.IntegerField(default=0, verbose_name='单选数量')
|
|
danxuan_score = models.FloatField(default=0, verbose_name='单选分数')
|
|
duoxuan_count = models.IntegerField(default=0, verbose_name='多选数量')
|
|
duoxuan_score = models.FloatField(default=0, verbose_name='多选分数')
|
|
panduan_count = models.IntegerField(default=0, verbose_name='判断数量')
|
|
panduan_score = models.FloatField(default=0, verbose_name='判断分数')
|
|
limit = models.IntegerField(default=0, verbose_name='限时(分钟)')
|
|
total_score = models.FloatField(default=0, verbose_name='满分')
|
|
pass_score = models.FloatField(default=0, verbose_name='及格分数')
|
|
|
|
|
|
class Meta:
|
|
verbose_name = '出题规则'
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class WorkScope(SoftCommonModel):
|
|
name = models.CharField(max_length=200, unique=True, verbose_name='名称')
|
|
subject = models.ForeignKey(Questioncat, verbose_name='所属学科', on_delete=models.CASCADE , related_name='workscope_subject')
|
|
questioncat = models.ManyToManyField(Questioncat, verbose_name='所选科目')
|
|
rule = models.ForeignKey(TestRule, on_delete=models.CASCADE, verbose_name='试卷结构')
|
|
|
|
class Meta:
|
|
verbose_name = '工作类别'
|
|
verbose_name_plural = verbose_name
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Paper(SoftCommonModel):
|
|
name = models.CharField(max_length=200, verbose_name='名称')
|
|
questions = models.ManyToManyField(Question, through='PaperQuestions')
|
|
limit = models.IntegerField(default=0, verbose_name='限时(分钟)')
|
|
total_score = models.FloatField(default=0, verbose_name='满分')
|
|
pass_score = models.FloatField(default=0, verbose_name='及格分数')
|
|
|
|
class PaperQuestions(CommonModel):
|
|
paper = models.ForeignKey(Paper, on_delete=models.CASCADE, verbose_name='试卷')
|
|
question = models.ForeignKey(Question, on_delete=models.CASCADE, verbose_name='试题')
|
|
score = models.FloatField(default=0, verbose_name='满分') |