{% for item in items%}<tr><td>{{item.id}}</td><td>{{item.name}}</td><td><表单方法=删除"><input type="hidden" value="{{item.id}}" name="delete-id"><input type="Submit">删除</button></表单></td></tr>{% 结束}
<块引用>
现在,在您的 views.py 中添加 DELETE 部分并删除记录:
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类 PersonTable(tables.Table):delete = tables.LinkColumn('main:delete_item', args=[A('delete-id')], attrs={'a':{'class':'btn'}})
How is going? I'm learning to programming in django. For the moment I'm building a simple app that utilizing a form update the referenced table.
Now I'm try to add a delete button in each row of my table but, beside I have tried a lot of solutions, I didn't find one that works correctly.
from django import forms
from .models import Income
class IncomeModelForm(forms.ModelForm):
class Meta:
model = Income
fields = "__all__"
tables
import django_tables2 as tables
from django_tables2.utils import A
from .models import Income
class 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"
views
from django.shortcuts import render
from django.http import HttpResponse
from django.views.generic import ListView
from .models import Income
from .tables import PersonTable
from .forms import IncomeModelForm
def 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)
Now, in your views.py add DELETE section and delete the record:
if request.method == 'DELETE':
Person.objects.get(pk=request.DELETE['delete-id']).delete()
You are using django_tables2, you can simply add this code in your 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'}
})