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, который мы генерируем.