首页 > 解决方案 > 如果查询集,如何在 django 控制台中打印 api

问题描述

序列化程序.py

from rest_framework import serializers
from access.models import SeekerRegister
from .models import CandidateDetails,Social,CvDetails,KeySkills,CandidateCompanyDetails,CandidateEducationDetails,ContactInfo


class MainSeekerSerializer(serializers.ModelSerializer):
    class Meta:
        model = SeekerRegister
        fields = ('contact_info',
                'candidate_details','social',
                'cv_details','key_skills',
                'candidate_company_details',
                'candidate_education_details',
                'seeker_language',
                'seeker_name','seeker_email',
                'seeker_contact_no','verified')
        depth = 1

视图.py

class AdvanceSearchViewSet(viewsets.ReadOnlyModelViewSet):
    queryset =  SeekerRegister.objects.all()
    serializer_class = MainSeekerSerializer

    def get_queryset(self):
        queryset = SeekerRegister.objects.all()

        if self.request.query_params.get('skills_any', None) is not None:
            skills_any = self.request.query_params.get('skills_any', None).split(",")
        else:
            return JsonResponse({"code":401,"msg":"skills_any is required"})

        if self.request.query_params.get('skills_must', None) is not None:
            skills_must = self.request.query_params.get('skills_must', None).split(",")
        else:
            skills_must = None

        if (skills_any is not None
         and skills_must is None:
            filters =  Q(key_skills__skills__in=skills_any) & Q(key_skills__skills__in=skills_must)
        else:
            filters =  Q(key_skills__skills__in=skills_any)

        queryset = queryset.filter(filters)
        print(queryset)
        return queryset

结果在浏览器中:

    [
     {
        "key_skills": [
          {
            "id": 1,
            "skills": "python",
            "versions": "3.600",
            "experience": "2.000",
            "user": 3
          },
          {
            "id": 4,
            "skills": "angular",
            "versions": "3.600",
            "experience": null,
            "user": 3
          },
          {
            "id": 5,
            "skills": "java",
            "versions": "16.060",
            "experience": null,
            "user": 3
          }
        ]
      }
    ]

在控制台中,当我打印查询集时,它即将到来 无论我在浏览器中获得什么,我如何在控制台中获得 api。

因为我有编辑字典技能

请看一看。

我有分片序列化程序和查看文件。

有没有办法修改api。

标签: pythondjangodjango-rest-framework

解决方案


在 api 中检查结果或控制台的可能解决方案之一是覆盖您的视图集的列表端点并在那里打印/控制台。

在您的 AdvanceSearchViewSet 中添加此函数。

def list(self, request, *args, **kwargs):
        queryset = self.filter_queryset(self.get_queryset())

        page = self.paginate_queryset(queryset)
        if page is not None:
            serializer = self.get_serializer(page, many=True)
            return self.get_paginated_response(serializer.data)

        serializer = self.get_serializer(queryset, many=True)
        // print here 
        print('response', serializer.data)
        return Response(serializer.data)

推荐阅读