我需要在网页上使用表单来选择要删除的对象。
由于每个对象都有一个唯一的id,选择要删除的项目的一种方法是使用id。
以下是一个示例,网页上的一个按钮将对象的id传递给
view.py
文件中的POST请求进行处理。
views.py
from django.shortcuts import render
from .models import MyModel
def myview(request):
if request.method == 'GET': MyModel(name='John Doe', score=83).save()
if request.method == 'POST':
if 'delete' in request.POST:
try:
key = request.POST['delete']
MyModel.objects.get(id=key).delete()
except MyModel.DoesNotExist:
pass
scores = MyModel.objects.all()
return render(request, 'mypage.html', {'scores': scores})
models.py
from django.db import models
class MyModel(models.Model):
name = models.CharField(max_length=50)
score = models.IntegerField()
urls.py
from django.urls import path
from .views import myview
urlpatterns = [
path('mypage/', myview, name='mypage')
]
templates/mypage.html
<form method='post' action={% url 'mypage' %}>
{% csrf_token %}
{% for person in scores %}
{{ person.name }} {{ person.score }}
{% comment %} to differentiate entries, use id {% endcomment %}
<button name='delete', value="{{person.id}}">Delete</button><br>
{% endfor %}
</form>
它创建了一个网页,看起来像下面这样,当点击删除按钮时,"John Doe"的条目将被删除。
![ex](https://istack.dev59.com/yHGqd.webp)
MyModel.objects.filter(id__in=request.POST.getlist('delete_list')).delete()
,我确定你想要一些东西来确保随机人员不能通过猜测主键来删除数据库中的所有对象。 - Yuji 'Tomita' Tomitafilter(foo).delete()
方法。 - Yuji 'Tomita' Tomita