From 2634d560360c04774cd0a54bc008bedb83df0469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9B=B9=E5=89=8D=E6=98=8E?= <909355014@qq.com> Date: Thu, 11 Aug 2022 21:50:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=AD=A3=E5=BC=8F=E8=80=83=E8=AF=95=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E9=80=89=E5=AE=9A=E8=AF=95=E5=8D=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../examtest/migrations/0037_exam_paper.py | 19 +++++++++++++ test_server/examtest/models.py | 2 +- test_server/examtest/serializers.py | 5 ++-- test_server/examtest/views.py | 28 +++++++++---------- 4 files changed, 37 insertions(+), 17 deletions(-) create mode 100644 test_server/examtest/migrations/0037_exam_paper.py diff --git a/test_server/examtest/migrations/0037_exam_paper.py b/test_server/examtest/migrations/0037_exam_paper.py new file mode 100644 index 0000000..4aeb8ac --- /dev/null +++ b/test_server/examtest/migrations/0037_exam_paper.py @@ -0,0 +1,19 @@ +# Generated by Django 3.0.4 on 2022-08-11 12:56 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('examtest', '0036_auto_20220528_2203'), + ] + + operations = [ + migrations.AddField( + model_name='exam', + name='paper', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='examtest.Paper', verbose_name='选定的试卷'), + ), + ] diff --git a/test_server/examtest/models.py b/test_server/examtest/models.py index e2cd546..fd579b0 100644 --- a/test_server/examtest/models.py +++ b/test_server/examtest/models.py @@ -23,7 +23,7 @@ class Exam(CommonModel): train_name = models.CharField('培训名称', null=True, blank=True, max_length=50) train_start_date = models.DateField('培训开始日期', null=True) train_end_date = models.DateField('培训结束日期', null=True) - + paper = models.ForeignKey(Paper, verbose_name='选定的试卷', on_delete=models.CASCADE, null=True, blank=True) qdimgs = JSONField('签到图片', default=list) xcimgs = JSONField('现场图片', default=list) diff --git a/test_server/examtest/serializers.py b/test_server/examtest/serializers.py index 68fcd97..a651ef1 100644 --- a/test_server/examtest/serializers.py +++ b/test_server/examtest/serializers.py @@ -63,6 +63,7 @@ class ExamTestListSerializer(serializers.ModelSerializer): paper_name = serializers.StringRelatedField(source='paper', read_only=True) exam_name = serializers.StringRelatedField(source='exam', read_only=True) consumer_name = serializers.SerializerMethodField() + consumer_username = serializers.CharField(source='consumer.username', read_only=True) took_format = serializers.SerializerMethodField() consumer_company_name = serializers.SerializerMethodField() class Meta: @@ -168,7 +169,7 @@ class ExamCreateUpdateSerializer(serializers.ModelSerializer): class Meta: model = Exam fields = ['name', 'place', 'opentime', 'closetime', 'proctor_name', 'proctor_phone', 'workscope', 'chance', - 'train_name', 'train_start_date', 'train_end_date'] + 'train_name', 'train_start_date', 'train_end_date', 'paper'] class ExamListSerializer(serializers.ModelSerializer): create_admin_username = serializers.StringRelatedField(source='create_admin') @@ -254,5 +255,5 @@ class ExamTestExamListSerializer(serializers.ModelSerializer): @staticmethod def setup_eager_loading(queryset): """ Perform necessary eager loading of data. """ - queryset = queryset.select_related('candidate') + queryset = queryset.select_related('candidate', 'consumer') return queryset \ No newline at end of file diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 27cb49c..df16932 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -125,13 +125,19 @@ class ExamViewSet(ModelViewSet): obj = Exam.objects.get(pk=kwargs['pk']) workscope = obj.workscope ret = {} - if workscope.name in ['医学Ⅲ类', '非医学Ⅲ类']: - ret['name'] = obj.name - ret['consumer_detail'] = request.data - ret['type'] = '正式考试' # 正式考试 - ret['exam'] = kwargs['pk'] - ret['exam_'] = ExamListSerializer(instance=obj).data - ret['workscope'] = workscope.id + ret['name'] = obj.name + ret['consumer_detail'] = request.data + ret['type'] = '正式考试' # 正式考试 + ret['exam'] = kwargs['pk'] + ret['exam_'] = ExamListSerializer(instance=obj).data + ret['workscope'] = workscope.id + if obj.paper: + serializer = PaperDetailSerializer(instance=obj.paper) + ret['paper'] = obj.paper.id + retx = serializer.data + retx.update(ret) + return Response(retx) + elif workscope.name in ['医学Ⅲ类', '非医学Ⅲ类']: ret['limit'] = 45 ret['total_score'] = 120 ret['pass_score'] = 90 @@ -159,12 +165,6 @@ class ExamViewSet(ModelViewSet): ret['questions'] = questions return Response(ret) elif workscope.name in ['放射工作人员(上岗)', '放射工作人员(在岗)']: - ret['name'] = obj.name - ret['consumer_detail'] = request.data - ret['type'] = '正式考试' # 正式考试 - ret['exam'] = kwargs['pk'] - ret['exam_'] = ExamListSerializer(instance=obj).data - ret['workscope'] = workscope.id ret['limit'] = workscope.rule.limit ret['total_score'] = workscope.rule.total_score ret['pass_score'] = workscope.rule.pass_score @@ -645,7 +645,7 @@ class ExamTestViewSet(PageOrNot, ModelViewSet): return Response({"id":candidate.pk, "number":candidate.number, "path":path}) -class PaperViewSet(ModelViewSet): +class PaperViewSet(PageOrNot, ModelViewSet): """ 押题卷增删改查 """