我想从数据库中删除对象后显示一条信息消息。我决定为此目的使用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
,因为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] 删除。
我来说两句