Как напечатать API в консоли Django вместо, если набор запросов - PullRequest
0 голосов
/ 16 января 2019

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

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
          }
        ]
      }
    ]

В консоли, когда я печатаю queryset оно приходит Как я могу получить API в консоли, что я получаю в браузере.

Поскольку я должен что-то отредактировать в навыках из словаря .

Пожалуйста, посмотрите.

У меня есть осколки сериализаторов и просмотр файла.

есть ли способ изменить API.

1 Ответ

0 голосов
/ 16 января 2019

Одно из возможных решений для проверки результата или консоли в 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...