examtest/test_server/examtest/models_paper.py

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='满分')