为了账号安全,请及时绑定邮箱和手机立即绑定

如何在表格的每一行中添加删除按钮?

如何在表格的每一行中添加删除按钮?

斯蒂芬大帝 2022-08-25 16:05:20
进展如何?我正在学习用django编程。目前,我正在构建一个简单的应用程序,该应用程序利用表单更新引用的表。现在,我尝试在表的每一行中添加一个删除按钮,但是,除了我尝试了很多解决方案之外,我没有找到一个正常工作的解决方案。在我的代码下面:网址from django.urls import pathfrom app import viewsapp_name = 'main'urlpatterns = [    path('', views.homepage, name='homepage'),    path('delete_item/<int:pk>', views.delete_item, name="delete_item"),]形式from django import formsfrom .models import Incomeclass IncomeModelForm(forms.ModelForm):    class Meta:        model = Income        fields = "__all__"表import django_tables2 as tablesfrom django_tables2.utils import Afrom .models import Incomeclass PersonTable(tables.Table):    delete = tables.LinkColumn('main:delete_item', args=[A('delete-id')], attrs={'a': {'class': 'btn'}})    class Meta:        model = Income        template_name = "django_tables2/bootstrap.html"视图from django.shortcuts import renderfrom django.http import HttpResponsefrom django.views.generic import ListViewfrom .models import Incomefrom .tables import PersonTablefrom .forms import IncomeModelFormdef homepage(request):    table = PersonTable(Income.objects.all())    if request.method == 'POST':         form = IncomeModelForm(request.POST)         if form.is_valid():             print("Il form è valido")             new_input = form.save()    else :        form = IncomeModelForm()    context= {"form": form,            "table":table }    return render(request, "app/base.html", context)def delete_item(request, pk):    Income.objects.filter(id=pk).delete()    items = Income.objects.all()    context = {    'items': items    }    return render(request, 'app/base.html', context)断续器{% load static %}{% load render_table from django_tables2 %}<!doctype html><html>  <head>    <!-- Required meta tags -->    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">我的表取消了“删除”列,但没有 buttoms,只有一个“-”。为什么?我的错误在哪里?
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

在表中显示记录时,需要使用“删除表单”按钮添加额外的表数据。例如:


<table>


{% for item in items%}


<tr>

<td>{{item.id}}</td>

<td>{{item.name}}</td>

<td>

    <form method="delete">

        <input type="hidden" value="{{item.id}}" name="delete-id">

        <input type="Submit">Delete</button>

    </form>

</td>

</tr>


{% endfor}

</table>

现在,在 views.py 添加删除部分并删除记录:


if request.method == 'DELETE':

        Person.objects.get(pk=request.DELETE['delete-id']).delete()

您正在使用django_tables2,您只需将此代码添加到 tables.py


from django_tables2.utils import A  # alias for Accessor

class PersonTable(tables.Table):

    delete = tables.LinkColumn('main:delete_item', args=[A('delete-id')], attrs={

    'a': {'class': 'btn'}

    })


查看完整回答
反对 回复 2022-08-25
  • 1 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信