2012-02-04 58 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