删除django中的多个对象

删除django中的多个对象,django,django-views,Django,Django Views,我需要使用网页从django中的数据库中选择几个要删除的对象。没有可供选择的类别,因此我无法像那样从所有类别中删除。我必须实现我自己的delete表单并在django中处理它吗?还是django已经有办法做到这一点了?因为它是在管理界面中实现的。您可以删除您想要的任何查询集。例如,删除具有某些帖子模型的所有博客帖子 Post.objects.all().delete() 以及删除任何有未来发布日期的帖子 Post.objects.filter(pub_date__gt=datetime.now

我需要使用网页从django中的数据库中选择几个要删除的对象。没有可供选择的类别,因此我无法像那样从所有类别中删除。我必须实现我自己的delete表单并在django中处理它吗?还是django已经有办法做到这一点了?因为它是在管理界面中实现的。

您可以删除您想要的任何查询集。例如,删除具有某些帖子模型的所有博客帖子

Post.objects.all().delete()
以及删除任何有未来发布日期的帖子

Post.objects.filter(pub_date__gt=datetime.now()).delete()
然而,您确实需要找到一种缩小查询集的方法。如果只希望视图删除特定对象,请查看

编辑:


对不起,误会了。我认为答案介于两者之间。要实现您自己的,请将
ModelForm
s和组合起来。否则,请查看提供类似功能的第三方应用程序。在a中,建议是。

不,您误解了这个问题。我知道我可以删除所有内容。但是我需要在网页上用表单选择要删除的对象。然后在my views.py中处理表单返回的数据。然后循环使用表单中返回的内容,并将其作为数据循环使用。但我想知道在django实现这一点的最佳实践是什么。啊,我错了!我要么使用第三方应用程序,要么使用带有
ModelForm
s的通用视图。@Dean,看看那个删除视图。或者你可以写下你自己的观点。。。我的意思是,最终您可能会收到一个PK列表,并在您的模型上调用delete
MyModel.objects.filter(id\uu in=request.POST.getlist('delete\u list')).delete()
,我确信您需要一些东西来确保随机人不能通过猜测PKs来删除数据库中的所有对象。@Dean,在不了解更多信息的情况下很难回答您的问题。您只需要构建一个表单,允许用户选择正确的删除条件(不管是什么——甚至可能是一个输入框,用户可以在其中键入ID号……但可能更复杂),构建一个响应该表单的视图,可能执行验证(权限),然后最后运行
过滤器(foo).delete()
method。框架没有提供这种功能的原因之一是@YujiTomita提到的编辑/删除授权问题和其他复杂性。如果确实需要复杂的筛选,请查看django筛选,并添加一个删除按钮,如果用户获得授权,该按钮将调用QuerySet.delete()。