模型的chioce排序及内容变更(多用于字符串)

def sort_choices(choices, reverse=False, v1_funcs=None, v2_funcs=None):
    """
    :param choices: (('a', 'hello'), ('b', 'world'), )
    :param reverse: True or False
    :param v1_funcs: if string, ['lower', 'upper', ...]
    :param v2_funcs: if string, ['lower', 'upper', ...]
    :return: tuple, new_choices
    """
    if v1_funcs is None:
        v1_funcs = []
    if v2_funcs is None:
        v2_funcs = []

    new_choices = []
    for v1, v2 in sorted(choices, key=lambda item: item[0], reverse=reverse):
        for name in v1_funcs:
            func = getattr(v1, name, None)
            v1 = func() if func else v1
        for name in v2_funcs:
            func = getattr(v2, name, None)
            v2 = func() if func else v2
        new_choices.append((v1, v2))
    return tuple(new_choices)

 

posted @ 2021-01-06 17:41  士为知己  阅读(168)  评论(0)    收藏  举报