2015-01-04 55 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