как передать аргумент (slug) для `success_url` в Django `DeleteView`

#python-3.x #django #django-models

#python-3.x #django #django-модели

Вопрос:

Я использую DeleteView для удаления сообщений из группы форума. Я хотел бы определить success_url таким образом, чтобы пользователь был перенаправлен в список записей в той же группе, где была удаленная запись. Проблема в том, что я не знаю, как передать имя группы (slug) с confirm_delete.html страницы на DeleteView в views.py .

 # urls.py
urlpatterns = [
    path('delete/<slug>/<pk>/', views.DeleteMyPost.as_view(), name='delete')
]
  
 # views.py
class DeleteMyPost(DeleteView):
    model = models.MyPost

    def get_success_url(self,*args,**kwargs):
        return reverse_lazy(
            'desired_url_name',
             kwargs={'slug':self.kwargs.get('slug')}
        )
  
 # mypost_confirm_delete.html
<form method="post">
  {% csrf_token %}
  <input type="submit" value="Delete">
</form>
  

Прямо сейчас это не работает, поскольку slug не передается в DeleteView . Как я могу это исправить?

Ответ №1:

Попробуйте:

число просмотров:

 class DeleteMyPost(DeleteView):

model = models.MyPost

def get_success_url(self, *args, **kwargs):
    return reverse_lazy('desired_url_name', args=[self.kwargs['slug']])
  

В вашем шаблоне списка поместите ссылку на шаблон удаления, например:

 <a href="{% url 'mypost_confirm_delete' slug=slug pk=mypost.id %}">Delete</a>
  

Удачи!