2012-02-04 91 views
56

我需要使用网页从Django的数据库中选择几个要删除的对象。没有可供选择的类别,所以我无法从中删除所有类别。我是否必须实现自己的删除表单并在django中处理它,或者django是否有办法做到这一点?在管理界面中执行。在Django中删除多个对象

回答

101

您可以删除任何您想要的查询集。例如,一些邮政模型删除所有博客文章

Post.objects.all().delete() 

,并与未来的发行日期,删除任何帖子

Post.objects.filter(pub_date__gt=datetime.now()).delete() 

你这样做,不过,需要拿出一个办法来缩小在你的QuerySet中。如果你只是想要一个视图来删除一个特定的对象,看看delete generic view

编辑:

对不起,误会。我认为答案介于两者之间。要实现您自己,请结合ModelForm s和generic views。否则,请查看提供类似功能的第三方应用。在related question中,建议是django-filter

+1

不,你错误地理解了这个问题。我知道我可以删除一切。但我需要选择要用网页上的表单删除的对象。然后在我的views.py中处理从表单返回的数据。然后循环通过删除表单中返回的数据作为它在数据中的循环。但我想知道在django中实现这个最佳实践。 – Dean 2012-02-04 18:39:57

+0

啊,我的错!我要么使用第三方应用程序,要么使用'ModelForm'的通用视图。 – 2012-02-04 18:47:00

+5

@Dean,看看那个删除视图。或者你可以写你自己的看法......我的意思是最终你可能会收到一个PK列表并在模型上调用delete ...'MyModel.objects.filter(id__in = request.POST.getlist('delete_list') ).delete()'我确定你想要确保一个随机的人不能通过猜测PK来删除数据库中的所有对象。 – 2012-02-04 19:22:42