Django - 如何将多个主键传递给视图

时间:2014-11-12 09:24:08

标签: django django-templates

我需要编写一个视图来一次删除多个对象。 我修改了HTML模板,使用复选框选择要删除的对象(用户)以及删除它们的按钮,但当然需要一个视图来执行任务。

如果您有一个项目要一次选择,您可以通过网址将其主键传递给视图,我该如何扩展它以传递多个主键?

2 个答案:

答案 0 :(得分:4)

你绝对不会通过URL这样做。如果您有一组复选框,那么您有一个表格;由于表单正在进行破坏性操作,因此将通过POST提交:因此您的ID集合位于request.POST

答案 1 :(得分:1)

您可以做的是以JSON格式发送数据,Django可以轻松解码

在前端,你有一个像这样的按钮的JavaScript,

function delete_object(pks) {
    var args = {type: "POST", url: "/delete/", data: {'pks': pks}};
    $.ajax(args);
    return false;
}

此函数将从中选择主键(以pks传递)并将其发布到Django URL ^delete/$。然后,Django视图函数可以像这样处理传入的数据,

def delete(request):
    object_pks = request.POST['pks']
    Docs.objects.filter(pk__in=object_pks).delete()