TS-ResHub/resumes/api/views.py

35 lines
981 B
Python

from ninja import Router, Query
from resumes.models import ResumeBasic
from resumes.api.schemas import ResumeBasicOut, PaginatedResumes
from typing import Optional
router = Router(tags=["简历"])
@router.get("/", response=PaginatedResumes)
def list_resumes(
request,
job_status: Optional[str] = Query(None),
age: Optional[int] = Query(None),
name: Optional[str] = Query(None),
source_id: Optional[int] = Query(None),
keyword: Optional[str] = Query(None),
limit: int = 10,
offset: int = 0
):
qs = ResumeBasic.objects.all()
if job_status:
qs = qs.filter(job_status=job_status)
if age:
qs = qs.filter(age=age)
if name:
qs = qs.filter(name__icontains=name)
if source_id:
qs = qs.filter(source_id=source_id)
if keyword:
qs = qs.filter(crawl_keywords__icontains=keyword)
total = qs.count()
results = qs[offset:offset + limit]
return {"count": total, "items": list(results)}