コード例 #1
0
ファイル: commons.py プロジェクト: nebula-2020/202103
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
コード例 #2
0
 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