优化django中的模型查找

时间:2013-08-31 00:34:19

标签: django django-views

我有一个代表任务的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})

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

1 个答案:

答案 0 :(得分:1)

使用dict和dict unpacking

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})