[英]Django_tables2 with Edit and Delete buttons. How to do it properly?
我正在構建一個列出、排序、更新和刪除對象的應用程序。 如何將編輯和/或刪除按鈕正確添加到 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 %}
視圖.py
def 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)
網址.py
from django.urls import path
from . import views
app_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"),
]
在這里,我向表模型添加了一列。
表.py
class CashierTable(tables.Table):
delete = tables.TemplateColumn(template_name='main/delete_template.html', orderable=False)
class Meta:
model = Cashier
order_by = '-id'
這是主要問題。
delete_template.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 /byauthor
Reverse for 'delete_item' with arguments '('',)' not found. 1 pattern(s) tried: ['byauthor/delete_item/(?P<pk>[0-9]+)$']
任何幫助或提示將不勝感激。
功能很好,很管用。 刪除具有該 ID 的對象。
我的目標是為每個包含對象 ID 的對象(行)生成一個按鈕,以便我可以通過單擊將其轉發到刪除。
我認為您可以使用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'}
})
我知道我很晚才回答這個問題(2 年后),但它可能會幫助某人,就像它幫助了我一樣。 這里的問題是 forloop 和模板中獲取的錯誤參數。
<a href="{% url 'main:delete_item' record.pk %}" type="submit" class="btn"><button>{{ item.id }}</button></a>
應該獲取的參數是“記錄”以訪問在該行中呈現的實際對象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.