bwangelme / python-style

0 stars 0 forks source link

Django ORM QuerySet 写法? #2

Open bwangelme opened 6 years ago

bwangelme commented 6 years ago

写法1

def filter_user(nickname = Empty, gender = Empty):
     query_condition, query_set = "", MUser.objects

    if nickname is not Empty:
         query_condition += "nickname = {} ".format(nickname)
         query_set = query_set.filter(nickname__contains=nickname)
    if gender is not Empty:
         query_condition += "gender = {} ".format(gender)
         query_set = query_set.filter(gender=gender)

    logger.info("query with condition {}".format(query_condition))
    return [
        item.to_dict()
        for item in query_set
    ]

写法2

def filter_user(nickname = Empty, gender = Empty):
    query_args = {}

    if nickname is not Empty:
         query_args['nickname__contains'] = nickname         
    if gender is not Empty:
         query_args['gender'] = gender

    query_set = MUser.objects.filter(**query_args)
    logger.info("query with condition {} ".format(query_args))
    return [
        item.to_dict()
        for item in query_set
    ]