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