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