好吧,这听起来很愚蠢,我对django和数据库很陌生。在
我要做的是通过模板从数据库中删除多个条目。在
这是我的视图.py在
def names(request):
e = Clash.objects.all()
for z in range(0 ,100): ##### need to change this 100 to max(pk)######
if request.POST.get('check'+str(z), False):
to_delete = Clash.objects.get(pk=z)
print (to_delete)
to_delete.delete()
return render_to_response("names.html", locals() , context_instance = RequestContext(request))
Clash是我的模型,下面是我要从中删除的模板:
^{pr2}$如何从表中检索max pk?并将其替换为“100”:
PS:我知道复选框的名称和id相同(无所谓)
PSS:这段代码可以工作,我可以删除多个条目,但这不是很好的编程。如何改进?在
Anentropic指出了在Python中循环的正确方法:即迭代列表本身,而不是数字范围。在
然而,这仍然效率低下。如果数据库中有一百万行,会发生什么?你真的根本不想迭代。相反,您只需要直接请求数据库删除所需的行。在
在模板中,更改复选框,使其将所有值放在同一参数中:
现在在您看来,只需获取值列表并将其删除:
^{pr2}$你可以这样做:
查看此处了解详细信息: https://docs.djangoproject.com/en/dev/ref/models/querysets/#last
你不能这样做:
相反,您可以直接迭代查询集:
^{pr2}$这也意味着您也不需要对循环的每次迭代执行此额外的查询:
…因为您已经从数据库加载了该对象,如
obj
。在所以你可以:
相关问题 更多 >
编程相关推荐