2015-01-04 56 views
0

使用下面的這個例子,我試圖找出一種方法來讓「刪除」按鈕刪除條目。我可以使用Django模板中的for循環刪除模型實例嗎?

VIEWS.PY 

latest_entries=Entry.objects.order_by('-pub_date')[:16] 



TEMPLATE.HTML 

{% for entry in latest_entries %} 
    entry.name <div class="delete">delete</div> 
    entry.price 
    entry.picture 
    entry.sellername 

{% endfor %} 

從閱讀Django文檔,我明白,我可以做一些像這樣刪除我的意見的對象:

b = Blog.objects.get(pk=1) 
b.delete() 

但是我不知道怎麼這與我的鏈接在模板中循環。

是否可以從模板中的for循環中刪除模型實例,還是需要轉到另一條路線才能完成此任務?

回答

0

您不能(也不應該因安全問題而嘗試)從模板中刪除模型實例,您應該將該操作傳遞給視圖,然後將其從視圖中刪除。

一個選擇是使用Javascript並通過AJAX發送請求。然後,在django url-> view中接收呼叫。一個簡單的例子可能是這樣的。

def delete_object(request): 
    if request.is_ajax(): 
     objeect_id = request.POST.get('object_id') 
     deleted_entry = Entry.objects.get(id=object_id) 
     deleted_entry.delete() 

再次閱讀您的問題後,我不明白爲什麼要使用forloop刪除對象。是否有觸發刪除的事件?如果事件是用戶單擊按鈕,那麼按鈕應該指向Django url,然後url應該指向視圖。

+0

基本上這是賣家可以登錄的店面頁面。我想要的是列出賣家發佈的所有商品,並讓賣家可以刪除任何這些商品。由於我正在使用for循環來顯示項目,因此我認爲會有辦法刪除單個項目。我不知道這是否回答你的問題。 – stephan

+0

我知道我可以像你上面顯示的那樣做,但是我不知道如何去處理它。我希望有更多的Django-ish方式。 – stephan