Django Rest Framework: потеря порядка при попытке вернуть get_queryset() в методе get modelviewset
В get_queryset я могу получить список кандидатов в нужном мне порядке, но когда я возвращаю его, то в ответе API я вижу его в другом порядке
serilizer.py
class CandidateListSerializer(serializers.ModelSerializer):
"""
Candidate serializer
"""
job_skill_detail = serializers.SerializerMethodField(read_only=True)
job_role_detail = serializers.SerializerMethodField(read_only=True)
primary_skills_detail = serializers.SerializerMethodField(read_only=True)
def get_job_skill_detail(self, obj):
if obj.job_skill:
return obj.job_skill.name
def get_job_role_detail(self, obj):
if obj.job_role:
return obj.job_role.name
def get_primary_skills_detail(self, obj):
return obj.primary_skills.all().values(
"id",
"name",
)
class Meta:
model = Candidate
fields = "__all__"
моя view.py
функция get_queryset в modelviewset api
def get_queryset(self):
if "Admin" in self.request.user.role or "Recruiter" in self.request.user.role:
return self.queryset
if "Client" in self.request.user.role:
candidates_source_to_client = CandidateSubmission.objects.filter(company=self.request.user.company).values_list('candidate', flat=True)
print(f"Candidates id from candidate submission model: {candidates_source_to_client}")
candidates = self.queryset.filter(
Q(
band__in=CompanyBands.objects.filter(
company=self.request.user.company
).values_list("band", flat=True)
)
| Q(id__in=candidates_source_to_client)
)
print(f"candidates from database with cliend company and company band: {candidates}")
candidates_final = candidates.annotate(
relevancy=Count(Case(When(id__in=candidates_source_to_client, then=1)))
).order_by("-relevancy")
print(f"final candidates list: {candidates_final}")
return candidates_final
мой печатный ответ из окончательного списка кандидатов, который я получаю
final candidates list: <QuerySet [<Candidate: Amresh Giri>, <Candidate: Dishita Vishwakarma>, <Candidate: Rhaan Kumaad 2>, <Candidate: Raan Kaad>, <Candidate: Vigneshkumar Chinnadurai>, <Candidate: Rhan Kumad>, <Candidate: Apurva Dhakre>, <Candidate: Saiba Kumar>, <Candidate: Ramona>]
Это заказ, который я хочу, но не могу получить этот заказ, в ответ он приходит в перепутанном порядке.
Как я могу получить заказ, который я указал выше в моем api ответе?
любая помощь будет оценена по достоинству...