0

我有一个 ToDo 模型,它代表一个任务。每个任务都属于一个组织、该组织内的一个团队和一个员工。

这就是我在视图中过滤任务的方式:

def task_list(request, param=None, param_id=None):
    if param == "org":
        tasks = ToDo.objects.filter(org__id = param_id).exclude(todo_status=4)
    elif param == "orgstaff":
        tasks = ToDo.objects.filter(assigned_to__id = param_id).exclude(todo_status=4)
    elif param == "orgteam":
        tasks = ToDo.objects.filter(team__id = param_id).exclude(todo_status=4)
    return render(request, "task_list.html", {"tasks":tasks})

有没有办法,我可以创建字典,并将以上 6 行替换为 1 或 2?

4

1 回答 1

1

使用 dict 和dict 解包

def task_list(request, param=None, param_id=None):
    field_mapping = {'org': 'org__id', 'orgstaff': 'assigned_to__id', 'orgteam': 'team__id'}
    tasks = ToDo.objects.filter(**{field_mapping[param]: param_id}).exclude(todo_status=4)
    return render(request, "task_list.html", {"tasks":tasks})
于 2013-08-31T00:39:23.777 回答