获取Django DeleteView中被删除的对象



我想显示从数据库中删除对象后的信息消息。为此,我决定使用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'

我想我可以那样做。但删除后没有留言。

SuccessMessageMixin[Django-doc]只在表单有效时运行,所以当视图继承了FormView[Django-doc],或者在文档中指定:

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

你不能用DeleteView,因为DeleteView不使用FormView(或使用FormMixin)。

然而,你可以制作自己的mixin,并根据SuccessMessageMixin[GitHub]的实现将其用于所有DeleteView:

from django.contrib import messages
classSuccessDeleteMessageMixin:
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'

最新更新