我需要编写一个视图来一次删除多个对象。 我修改了HTML模板,使用复选框选择要删除的对象(用户)以及删除它们的按钮,但当然需要一个视图来执行任务。
如果您有一个项目要一次选择,您可以通过网址将其主键传递给视图,我该如何扩展它以传递多个主键?
答案 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()