[英]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.