Django - 如何从列表中删除模型项

时间:2018-02-18 22:17:52

标签: python django

我目前正在使用Django构建一个应用程序,用于创建用户故事卡(有点像Trello板)。

在一个页面上,我将我的卡片显示为列表:

enter image description here

列表的代码是:

<h1>ScrumBuddy Board</h1>
   <ul>
          {% for card in cards.all %}
              <li class="card"><a href="{% url 'card' %}/{{ card.id }}">{{ card.title }}</a>
             </li>
          {% endfor %}

   </ul>

董事会的观点是:

def board(request):
    cards = Card.objects
    context = {'cards': cards}
    return render(request, 'scrumbuddy/board.html', context)

我想在每张卡片上添加删除链接,将其从此列表中删除,最好使用确认对话框。关于如何做到这一点的任何建议都会很棒。

非常感谢。

1 个答案:

答案 0 :(得分:0)

我建议使用Django基于类的通用视图,在您的情况下,您可能会使用ListViewDeleteView

对于列表视图,您可以使用以下内容:

# views.py
from django.views.generic import ListView
from scrumbuddy.models import Card

class CardList(ListView):
    model = Card

对于删除视图,如下所示:

# views.py
from django.views.generic.edit import DeleteView
from django.urls import reverse_lazy
from scrumbuddy.models import Card

class CardDelete(DeleteView):
    model = Card
    success_url = reverse_lazy('card-list')

对于删除操作的确认,来自DetailView主题的Django documentation

  

显示确认页面并删除现有页面的视图   宾语。只有请求方法是,才会删除给定的对象   POST。如果通过GET获取此视图,它将显示确认   应该包含POST到同一URL的表单的页面。

另请注意,您可以将参数传递给url模板标记,例如:

<a href="{% url 'card' id=card.id %}">

而不是:

<a href="{% url 'card' %}/{{ card.id }}">

注意:我猜测您的card.id网址的card参数名称为id - 您必须根据urls.py更新此参数参数名称不同。