简体   繁体   English

如果queryset如何在Django控制台中打印api

[英]How to print api in django console instead if queryset

serializers.py serializers.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

views.py views.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

result in browser: 结果在浏览器中:

    [
     {
        "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
          }
        ]
      }
    ]

In console when i am printing queryset it is coming 在控制台中,当我打印queryset How can i get api in console whatever i am getting in browser. 无论我在浏览器中获得什么,如何在控制台中获得api。

Because i have edit something in the skills of dictionary . 因为我对字典技巧有所编辑。

Please have a look. 请看一看。

I have sharded serializers and view file . 我已经分片了序列化器和查看文件。

is there any way to modify the api. 有没有办法修改api。

One of the possible solution to check result or console in api end to overwrite list endpoint of yours viewset and print/console there. 在api端检查结果或控制台的一种可能的解决方案,以覆盖您的视图集的列表端点并在那里打印/控制台。

Add this function in your AdvanceSearchViewSet. 在您的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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM