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

问题描述 投票:0回答:1

我目前正在使用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)

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

非常感谢。

python django
1个回答
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')

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

显示确认页面并删除现有对象的视图。仅当请求方法为POST时才会删除给定对象。如果通过GET获取此视图,它将显示一个确认页面,其中应包含POST到同一URL的表单。

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

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

代替:

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

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

© www.soinside.com 2019 - 2024. All rights reserved.