Django/Python - удаление строки в базе данных sqlite3 с помощью кнопки формы
Я хочу иметь кнопку удаления для удаления строки в моей базе данных sqlite3. У меня почти получилось, но я не уверен, что мне нужно добавить, чтобы отправить ID из html
строки в views.py
. Вот что у меня есть:
mailindex.html
<form action="" method="POST" enctype="multipart/form-data">
{% csrf_token %}
<div class="form-group">
<a href="{% url 'core:mail' mail.id %}" class="btn btn-secondary btn-sm">Manage</a>
<button type="submit" name="deletemail" value="deletemail" class="btn btn-secondary btn-sm">Delete</button>
</div>
</form>
views.py
class MailboxView(generic.ListView):
extra_context = {"mailbox_page": "active"}
model = MailMessage
context_object_name = 'mails'
template_name = 'core/mailbox/mailindex.html'
def post(self, request):
# if 'deletemail' in self.request.POST:
if request.POST.get('deletemail'):
mail = MailMessage.objects.get(pk=13)
mail.delete()
return HttpResponseRedirect(self.request.path_info)
Это работает, в том смысле, что когда я нажимаю кнопку удаления, то удаляется письмо с ID = 13. Что логично, поскольку я поместил туда номер 13. Я бы хотел заменить '13' на mail.id, но я не уверен, как это сделать. Надеюсь, это возможно: Я бы предпочел, чтобы это было как можно проще, чтобы не создавать дополнительный url, но опять же не знаю, возможно ли это...
Используйте тег deletemail в type:hidden другой input, а не кнопку.
Попробуйте это
<div class="form-group">
<a href="{% url 'core:mail' mail.id %}" class="btn btn-secondary btn-sm">Manage</a>
<input type="hidden" name="deletemail" value="13">
<button type="submit" class="btn btn-secondary btn-sm">Delete</button>
</div>