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

带有编辑和删除按钮的 Django_tables2。如何正确地做到这一点?

带有编辑和删除按钮的 Django_tables2。如何正确地做到这一点?

慕婉清6462132 2022-01-11 17:07:00
我正在构建一个列出、排序、更新和删除对象的应用程序。如何正确地将编辑和/或删除按钮添加到 django-tables2 表渲染?使用 Python 版本:3.7 和 Django 版本:2.1.7。我尝试了多种方法并在互联网上进行了搜索,但使用 django-tables2 表渲染实现它似乎有点复杂。这是我的代码。byauthor.html --table 在这个 html 中呈现{% extends "main/base.html" %}{% block content %}{% load render_table from django_tables2 %}            <h3>Logged in: {{user.first_name}} {{user.last_name}} </h3>            <p>{{ time|date:"d.m.Y." }}</p>            {% render_table table %}{% endblock %}views.pydef byauthor(request):    current_account = request.user    items = Cashier.objects.filter(user__exact=current_account).filter(cashier_published__date=datetime.today())    table = CashierTable(Cashier.objects.filter(user__exact=current_account).filter(cashier_published__date=datetime.today()))    RequestConfig(request).configure(table)    return render(request, 'main/byauthor.html', {'table': table, 'time': datetime.now(), 'items': items})def delete_item(request, pk):    Cashier.objects.filter(id=pk).delete()    items = Cashier.objects.all()    context = {    'items': items    }    return render(request, 'main/delete_confirmation.html', context)urls.pyfrom django.urls import pathfrom . import viewsapp_name = 'main'  # here for namespacing of urls.urlpatterns = [    path("", views.homepage, name="homepage"),    path("byauthor", views.byauthor, name="byauthor"),    path('byauthor/delete_item/<int:pk>', views.delete_item, name="delete_item"),]这是主要问题。删除模板.html{% for item in items %}    <a href="{% url 'main:delete_item' item.pk %}" type="submit" class="btn"><button>{{ item.id }}</button></a>{% endfor %}当我的表被渲染出来时,它显然会迭代它为其生成新行的对象,这很好。但是当我使用这个代表删除特定对象的按钮的 delete_template.html 渲染它时,它会再次遍历对象并为每一行中的所有对象生成按钮。因此,如果我有 10 个对象,它会为每行生成 10 个删除按钮。但是如果我在delete_template.html 中删除这个 {% for %} 循环,它会产生这个错误:NoReverseMatch at /byauthorReverse for 'delete_item' with arguments '('',)' not found. 1 pattern(s) tried: ['byauthor/delete_item/(?P<pk>[0-9]+)$']任何帮助或提示将不胜感激。功能不错,可以用。删除具有该 ID 的对象。我的目标是为其中包含对象 ID 的每个对象(行)生成一个按钮,以便我可以通过单击将其转发到删除。
查看完整描述

2 回答

?
holdtom

TA贡献1805条经验 获得超10个赞

我认为您可以使用LinkColumn添加删除按钮。你可以这样做:


from django_tables2.utils import A  # alias for Accessor



class CashierTable(tables.Table):

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

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

    })


查看完整回答
反对 回复 2022-01-11
?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

我知道我很晚才回答这个问题(2年后),但它可能会帮助某人,就像它帮助了我一样。这里的问题在于 forloop 和模板中获取的错误参数。

<a href="{% url 'main:delete_item' record.pk %}" type="submit" class="btn"><button>{{ item.id }}</button></a>

应该获取的参数是“记录”,以访问在该行中呈现的实际对象。


查看完整回答
反对 回复 2022-01-11
  • 2 回答
  • 0 关注
  • 245 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号