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。
答案 0 :(得分:1)
一种可能的解决方案,可以在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)