Django DeleteView - как передать параметр для использования для success_url?

Я использую DeleteView, где я хочу, чтобы success_url был представлением, которое вызвало DeleteView. Этот success_url требует передачи ему двух параметров.

urls.py

path('listparts/<uuid:company_pk>/<uuid:worker_pk>/', views.listparts, name='listparts'),
path('deletepart/<uuid:part_pk>/', views.PartDeleteView.as_view(), name='deletepart'),

view

def listparts(request, company_pk, worker_pk):
    ...
    ...

class PartDeleteView(DeleteView):
    model: Part
    success_url = reverse_lazy('listparts' company_pk worker_pk)

шаблон списка частей

<a href="{% url 'deletepart' part_pk %}">Delete this part</a>

Как передать company_pk и worker_pk в DeleteView? Я думаю, что href становится

<a href="{% url 'deletepart' part_pk company_pk worker_pk %}">Delete this part</a>

Но я не знаю, как справиться с этим в DeleteView. Я уверен, что это связано с работой с kwargs, но я все еще изучаю, как работают kwargs в чем-то вроде def get_success_url(self)

Я думаю, что здесь имеет смысл переопределить get_success_url, и таким образом реализовать это как:

from django.urls import reverse

class PartDeleteView(DeleteView):
    model = Part

    def get_success_url(self):
        return reverse(
            'listparts',
            kwargs={
                'company_pk': self.object.company_id
                'worker_pk': self.object.worker_id
            }
        )

Здесь self.object - это объект, который был удален, и мы, таким образом, обращаемся к company_id и worker_id этого объекта как kwargs=… для URL, который мы генерируем.

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