在Django DeleteView中获取已删除的对象

ru_bender

我想从数据库中删除对象后显示一条信息消息。我决定为此目的使用SuccessMessageMixin。如何将对象属性添加到success_message?

class PostDeleteView(SuccessMessageMixin, DeleteView):
   model = Post
   success_url = reverse_lazy('post_list')

   def get_success_message(self, cleaned_data):
       return 'The ' + str(self.object) + ' post was deleted'

我以为我可以那样做。但是删除后没有消息。

威廉·范·昂塞姆(Willem Van Onsem)

SuccessMessageMixin[Django的DOC]仅当一个形式是有效的运行,所以当从一个视图继承FormView[Django的DOC] 或者如文档中指定的:

将成功消息属性添加FormView基于类。

您不能将其与一起使用DeleteView,因为aDeleteView不使用FormView(或使用FormMixin)。

但是,您可以创建自己的mixin,并DeleteView根据[GitHub]实现将其SuccessMessageMixin用于所有

from django.contrib import messages

class SuccessDeleteMessageMixin:
    success_message = ''

    def delete(self, *args, **kwargs):
        response = super().delete(*args, **kwargs)
        success_message = self.get_success_message()
        if success_message:
            messages.success(self.request, success_message)
        return response

    def get_success_message(self):
        return self.success_message

然后将此mixin与:

class PostDeleteView(SuccessDeleteMessageMixin, DeleteView):
   model = Post
   success_url = reverse_lazy('post_list')

   def get_success_message(self, cleaned_data):
       return f'The post {self.object} was deleted'

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章