diff --git a/test_mini/pages/yati/index.wxml b/test_mini/pages/yati/index.wxml index 27dc916..88c9ceb 100644 --- a/test_mini/pages/yati/index.wxml +++ b/test_mini/pages/yati/index.wxml @@ -1,7 +1,9 @@ -当前工作类别押题卷 +当前工作类别押题卷 +(暂无) + diff --git a/test_mini/project.config.json b/test_mini/project.config.json index 465536f..8b6c1e8 100644 --- a/test_mini/project.config.json +++ b/test_mini/project.config.json @@ -4,7 +4,7 @@ "ignore": [] }, "setting": { - "urlCheck": true, + "urlCheck": false, "es6": true, "postcss": true, "minified": true, diff --git a/test_server/crm/serializers.py b/test_server/crm/serializers.py index e4aefc3..4fa6fca 100644 --- a/test_server/crm/serializers.py +++ b/test_server/crm/serializers.py @@ -27,3 +27,10 @@ class ConsumerSerializer(serializers.ModelSerializer): class Meta: model = Consumer exclude = ('avatar','collects') + + @staticmethod + def setup_eager_loading(queryset): + """ Perform necessary eager loading of data. """ + queryset = queryset.select_related('company','workscope') + queryset = queryset.prefetch_related('subjects',) + return queryset diff --git a/test_server/crm/views.py b/test_server/crm/views.py index 2f76d58..65a992c 100644 --- a/test_server/crm/views.py +++ b/test_server/crm/views.py @@ -84,6 +84,11 @@ class ConsumerViewSet(ModelViewSet): filterset_fields = ('company',) search_fields = ('^name',) + def get_queryset(self): + queryset = self.queryset + queryset = self.get_serializer_class().setup_eager_loading(queryset) + return queryset + def create(self, request, *args, **kwargs): serializer = self.get_serializer(data=request.data) if serializer.is_valid(): diff --git a/test_server/examtest/serializers.py b/test_server/examtest/serializers.py index 987e962..8de9e76 100644 --- a/test_server/examtest/serializers.py +++ b/test_server/examtest/serializers.py @@ -32,6 +32,12 @@ class WorkScopeSerializer(serializers.ModelSerializer): class Meta: model = WorkScope fields = '__all__' + + @staticmethod + def setup_eager_loading(queryset): + """ Perform necessary eager loading of data. """ + queryset = queryset.prefetch_related('questioncat',) + return queryset class MoniTestSerializer(serializers.ModelSerializer): """ @@ -66,9 +72,27 @@ class ExamTestListSerializer(serializers.ModelSerializer): class AnswerDetailSerializer(serializers.ModelSerializer): class Meta: model = AnswerDetail - fields = '__all__' + exclude = ('examtest',) + # fields = '__all__' depth = 1 + @staticmethod + def setup_eager_loading(queryset): + """ Perform necessary eager loading of data. """ + # select_related for "to-one" relationships + queryset = queryset.select_related('examtest',) + + # prefetch_related for "to-many" relationships + queryset = queryset.prefetch_related( + 'question',) + + # Prefetch for subsets of relationships + # queryset = queryset.prefetch_related( + # Prefetch('unaffiliated_attendees', + # queryset=Attendee.objects.filter(organization__isnull=True)) + # ) + return queryset + class AnswerDetailCreateSerializer(serializers.ModelSerializer): class Meta: model = AnswerDetail diff --git a/test_server/examtest/views.py b/test_server/examtest/views.py index 379e96d..f0e94c7 100644 --- a/test_server/examtest/views.py +++ b/test_server/examtest/views.py @@ -36,6 +36,7 @@ class AnswerDetailView(APIView): queryset = AnswerDetail.objects.all() if request.query_params.get('examtest', None): queryset = queryset.filter(examtest=request.query_params.get('examtest')) + queryset = AnswerDetailSerializer.setup_eager_loading(queryset) serializer = AnswerDetailSerializer(instance=queryset,many=True) return Response(serializer.data) @@ -56,6 +57,11 @@ class WorkScopeViewSet(ModelViewSet): filterset_fields = ['subject'] search_fields = ('^name',) + def get_queryset(self): + queryset = self.queryset + queryset = self.get_serializer_class().setup_eager_loading(queryset) + return queryset + @action(methods=['get'], detail=True,url_path='monitest', url_name='gen_monitest', authentication_classes=[],permission_classes=[], perms_map=[{'get':'gen_monitest'}]) diff --git a/test_server/question/serializers.py b/test_server/question/serializers.py index 8b92872..e807780 100644 --- a/test_server/question/serializers.py +++ b/test_server/question/serializers.py @@ -20,7 +20,16 @@ class SubjectSerializer(serializers.ModelSerializer): - +class QuestioncatSerializerDefault(serializers.ModelSerializer): + """ + 题库分类序列化 + """ + create_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True) + update_time = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True) + subject_name = serializers.StringRelatedField(source='pid') + class Meta: + model = Questioncat + fields = '__all__' class QuestioncatSerializer(serializers.ModelSerializer): """ diff --git a/test_server/question/views.py b/test_server/question/views.py index bb1fe9c..8f02a1d 100644 --- a/test_server/question/views.py +++ b/test_server/question/views.py @@ -13,7 +13,7 @@ import json from utils.custom import CommonPagination from .models import Questioncat, Question -from .serializers import QuestioncatSerializer, QuestionSerializer, SubjectSerializer +from .serializers import QuestioncatSerializer, QuestionSerializer, SubjectSerializer, QuestioncatSerializerDefault from server import settings from crm.models import PaySubject from examtest.models import WorkScope @@ -42,7 +42,7 @@ class QuestioncatViewSet(ModelViewSet): {'get': 'questioncat_list'}, {'post': 'questioncat_create'}, {'put': 'questioncat_update'}, {'delete': 'questioncat_delete'}) queryset = Questioncat.objects.filter(is_delete=0,is_subject=False).all() - serializer_class = QuestioncatSerializer + serializer_class = QuestioncatSerializerDefault pagination_class = CommonPagination ordering_fields = ['id'] ordering = ['type','id']