def _make_queryset(q: QuerySet, search: dict, fields_paramname: str, exclude_paramname: str, orderby_paramname: str, distinct_paramname: str, keyval: str, keyor: str) -> Q: filters = search.get(fields_paramname) ftype = type(filters) if dict == ftype: query = _make_query(filters, keyval, keyor) if query is not None: q = q.filter(**filters) elif Q == ftype: q = q.filter(filters) filters = search.get(exclude_paramname) ftype = type(filters) if dict == ftype: query = _make_query(filters, keyval, keyor) if query is not None: q = q.exclude(**filters) elif Q == ftype: q = q.exclude(filters) filters = search.get(orderby_paramname) if type(filters) == list: q = q.order_by(*filters) else: q = q.order_by(str(filters)) filters = search.get(distinct_paramname) if type(filters) == list: q = q.distinct(*filters) else: q = q.distinct(str(filters)) return q
def get_recommended_jobs(self, user): user_skills = user.skills.all() recommended_jobs = QuerySet(model=Job) for skill in user_skills: recommended_jobs = recommended_jobs | skill.jobs.all() recommended_jobs = recommended_jobs.distinct() return recommended_jobs