paper 字段修改
This commit is contained in:
parent
851e9291ab
commit
d45afb9861
|
|
@ -50,10 +50,10 @@ class Question(CommonAModel):
|
|||
|
||||
class Paper(CommonAModel):
|
||||
name = models.CharField(max_length=200, verbose_name='名称')
|
||||
questions = models.ManyToManyField(Question, through='PaperQuestions')
|
||||
questions = models.ManyToManyField(Question, through='PaperQuestion')
|
||||
limit = models.IntegerField(default=0, verbose_name='限时(分钟)')
|
||||
total_score = models.FloatField(default=0, verbose_name='满分')
|
||||
pass_score = models.FloatField(default=0, verbose_name='及格分数')
|
||||
pass_score = models.FloatField(default=0, verbose_name='通过分数')
|
||||
danxuan_count = models.IntegerField(default=0, verbose_name='单选数量')
|
||||
danxuan_score = models.FloatField(default=2, verbose_name='单选分数')
|
||||
duoxuan_count = models.IntegerField(default=0, verbose_name='多选数量')
|
||||
|
|
@ -68,7 +68,7 @@ class Paper(CommonAModel):
|
|||
return self.name
|
||||
|
||||
|
||||
class PaperQuestions(BaseModel):
|
||||
class PaperQuestion(BaseModel):
|
||||
paper = models.ForeignKey(Paper, on_delete=models.CASCADE, verbose_name='试卷')
|
||||
question = models.ForeignKey(Question, on_delete=models.CASCADE, verbose_name='试题')
|
||||
total_score = models.FloatField(default=0, verbose_name='单题满分')
|
||||
|
|
@ -78,7 +78,7 @@ class Exam(CommonAModel):
|
|||
"""
|
||||
组织的正式考试
|
||||
"""
|
||||
code = models.CharField('考试编号', max_length=100, null=True, blank=True)
|
||||
code = models.CharField('考试编号', max_length=100, null=True, blank=True, unique=True)
|
||||
name = models.CharField('名称', max_length=100)
|
||||
place = models.CharField('考试地点', max_length=100, null=True, blank=True)
|
||||
open_time = models.DateTimeField('开启时间', null=True, blank=True)
|
||||
|
|
@ -91,7 +91,7 @@ class Exam(CommonAModel):
|
|||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
class ExamTest(CommonAModel):
|
||||
class ExamRecord(CommonAModel):
|
||||
'''
|
||||
考试记录表
|
||||
'''
|
||||
|
|
@ -111,16 +111,17 @@ class ExamTest(CommonAModel):
|
|||
end_time = models.DateTimeField(verbose_name='结束答题时间')
|
||||
detail = models.ManyToManyField(Question, verbose_name='答题记录', through='AnswerDetail')
|
||||
is_pass = models.BooleanField(default=True, verbose_name='是否通过')
|
||||
exam = models.ForeignKey(Exam, verbose_name='关联的正式考试', null=True, blank=True, related_name='examtest_exam', on_delete= models.SET_NULL)
|
||||
exam = models.ForeignKey(Exam, verbose_name='关联的正式考试', null=True, blank=True, on_delete= models.SET_NULL)
|
||||
questions = JSONField(default=list, verbose_name='下发的题目列表', blank=True)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '模拟考试'
|
||||
verbose_name = '考试记录'
|
||||
verbose_name_plural = verbose_name
|
||||
|
||||
|
||||
|
||||
class AnswerDetail(BaseModel):
|
||||
examtest = models.ForeignKey(ExamTest, on_delete=models.CASCADE, related_name='answerdetail_examtest')
|
||||
examrecord = models.ForeignKey(ExamRecord, on_delete=models.CASCADE)
|
||||
question = models.ForeignKey(Question, on_delete=models.CASCADE)
|
||||
user_answer = JSONField(null=True,blank=True)
|
||||
score = models.FloatField(default=0, verbose_name='本题得分')
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
from rest_framework.serializers import ModelSerializer, CharField
|
||||
from rest_framework.serializers import ModelSerializer, CharField, Serializer, SerializerMethodField, FloatField
|
||||
from rest_framework import serializers
|
||||
|
||||
from apps.exam.models import Question, Questioncat, Paper, Exam
|
||||
from apps.exam.models import Question, Questioncat, Paper, Exam, PaperQuestion
|
||||
|
||||
|
||||
class QuestioncatSerializer(ModelSerializer):
|
||||
|
|
@ -20,6 +21,45 @@ class PaperSerializer(ModelSerializer):
|
|||
model = Paper
|
||||
exclude = ('questions',)
|
||||
|
||||
|
||||
class QuestionReadSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = Question
|
||||
exclude = ['right']
|
||||
|
||||
class PaperQuestionSerializer(Serializer):
|
||||
id = CharField(label='题目ID')
|
||||
total_score = FloatField(label='单题满分')
|
||||
|
||||
class PaperCreateUpdateSerializer(ModelSerializer):
|
||||
questions_ = PaperQuestionSerializer(many=True)
|
||||
class Meta:
|
||||
model = Paper
|
||||
fields = '__all__'
|
||||
|
||||
class PaperQuestionDetailSerializer(ModelSerializer):
|
||||
id = serializers.IntegerField(source='question.id')
|
||||
name = serializers.ReadOnlyField(source='question.name')
|
||||
options = serializers.ReadOnlyField(source='question.options')
|
||||
right = serializers.ReadOnlyField(source='question.right')
|
||||
type = serializers.ReadOnlyField(source='question.type')
|
||||
img = serializers.ReadOnlyField(source='question.img')
|
||||
questioncat_name = serializers.ReadOnlyField(source='question.questioncat.name')
|
||||
level = serializers.ReadOnlyField(source='question.level')
|
||||
class Meta:
|
||||
model = PaperQuestion
|
||||
fields = ('id','name','options','right','type','level','total_score','questioncat_name', 'img')
|
||||
|
||||
class PaperDetailSerializer(ModelSerializer):
|
||||
questions_ = SerializerMethodField()
|
||||
class Meta:
|
||||
model = Paper
|
||||
fields = '__all__'
|
||||
|
||||
def get_questions_(self, instance):
|
||||
pqs = PaperQuestion.objects.filter(paper=instance)
|
||||
return PaperQuestionDetailSerializer(pqs, many=True).data
|
||||
|
||||
class ExamCreateUpdateSerializer(ModelSerializer):
|
||||
class Meta:
|
||||
model = Exam
|
||||
|
|
@ -29,4 +69,7 @@ class ExamListSerializer(ModelSerializer):
|
|||
create_by_name = CharField(source='create_by.name', read_only=True)
|
||||
class Meta:
|
||||
model = Exam
|
||||
fields = '__all__'
|
||||
fields = '__all__'
|
||||
|
||||
class ExamAttendSerializer(Serializer):
|
||||
code = CharField(label="考试编号")
|
||||
Loading…
Reference in New Issue