Как правильно удалить экземпляр модели в Django

Я пытаюсь удалить экземпляр события из моего календаря. Затем я хочу, чтобы Django перенаправлял на страницу календаря после удаления события.

В моем файле views.py я определил функцию event_delete:

def event_delete(request, event_id=None):
    Event.objects.get(pk=event_id).delete()
    return HttpResponseRedirect(reverse("cal:calendar"))

В моем urls.py я определил url для удаления:

from django.conf.urls import url
from . import views

app_name = "cal"
urlpatterns = [
    url(r"^index/$", views.index, name="index"),
    url(r"^calendar/$", views.CalendarView.as_view(), name="calendar"),
    url(r"^event/new/$", views.event, name="event_new"),
    url(r"^event/edit/(?P<event_id>\d+)/$", views.event, name="event_edit"),
    url(r"^event/delete/$", views.event_delete, name="event_delete"),
]

и в моем файле event.html я определил тег a, который принимает event_delete:

<a class="btn cancel-button buttons login_btn" href="{% url 'cal:event_delete' %}" value="Delete" style="font-family:Optima;">Delete Event</a>

Когда я пытаюсь удалить событие, оно перенаправляет меня обратно на страницу календаря, но я все еще вижу событие. При повторной попытке выдает ошибку

DoesNotExist at /event/delete/
Event matching query does not exist.

Когда я проверяю в своем администраторе, я все еще вижу экземпляр события. Пожалуйста, посоветуйте, как я могу решить эту проблему.

href="{% url 'cal:event_delete' %}"

Здесь вы не указали id события для удаления, поэтому это не может сработать. Возможно, для решения вашей проблемы будет достаточно изменить следующий вариант:

href="{% url 'cal:event_delete' event.id %}"

(при условии, что экземпляр события находится в переменной event в вашем шаблоне)

Вернуться на верх