【发布时间】:2022-01-21 18:21:59
【问题描述】:
美好的一天, 对于每个创建的标题,我都有一个删除 btn。当您单击删除按钮时,模型将使用 url localhost:8000/delete/OBJECT_ID 删除
models.py
class NewTitle(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
default=None,
null=True,
on_delete=models.CASCADE,
)
title = models.CharField(max_length=200)
creator_adress = models.GenericIPAddressField(null=True)
id = models.BigAutoField(primary_key=True)
def __str__(self):
return str(self.title)
views.py
def title_view(request):
custom_title_id = random.randint(1111, 1111111111111)
titles = # What to here, maybe NewTitle.pk?
if request.method == 'POST':
form = NewTitleForm(request.POST, instance=NewTitle(user=request.user))
if form.is_valid():
obj = form.save(commit=False)
obj.creator_adress = get_client_ip(request)
obj.id = custom_title_id
while NewTitle.objects.filter(id=obj.id).exists():
obj.id = random.randint(111, 11111111111)
obj.save()
return redirect('/another')
else:
form = NewTitleForm()
return render(request, 'test.html', {'form': form, 'titles': titles})
def title_delete(request, title_id):
user_title = NewTitle.objects.filter(id=title_id,
user=request.user)
if user_title:
user_title.delete()
else:
return redirect('https://example.com')
return HttpResponseRedirect('/another')
test.html
{% for i in request.user.newtitle_set.all %}
<p> {% if i.user == request.user %} {{ i.title }} {% endif %} <form action="delete/ #THE CURRENT OBJECT ID" method="POST">{% csrf_token %}<button type="submit">Delete Title</button></form> </p>
{% endfor %}
每个“标题”都显示在模板中。在每个标题旁边都有一个删除按钮,用于删除/OBJECT_ID。如何将 action="" 设置为正确的删除 URL。这样我就可以得到标题(对象)的当前 ID。
有趣的部分是在views.py 中的titles 变量和在test.html 中的第二种形式action=""
非常感谢! :-)
【问题讨论】: