我想根据我的过滤器显示消息。
CHOICES = (
('0', 'published',),
('1', 'pending',),
('2', 'rejected',),
)
在这里,我尝试了这个基于过滤器显示消息的代码,但它只显示已发布的消息。
def get_context_data(self, **kwargs):
data = super().get_context_data(**kwargs)
published = BlogComment.objects.filter(is_published="0")
pending = BlogComment.objects.filter(is_published="1")
if published:
messages.add_message(self.request, messages.INFO, 'Comment status published Sucessfully')
elif pending:
messages.add_message(self.request, messages.INFO, 'Comment status pending Sucessfully')
return data
为什么我只收到已发布的消息?
我还尝试了if语句,而不是elif。在使用if语句之后,当我改变任何对象的状态时,我会同时得到三条消息。
if published:
messages.add_message(self.request, messages.INFO, 'Comment Published Sucessfully')
if pending:
messages.add_message(self.request, messages.INFO, 'Comment Status Pending')
if rejected:
messages.add_message(self.request, messages.INFO, 'Comment Status
发布于 2021-06-09 15:51:13
您是否正在尝试显示单个对象的状态更新?如果是这样,那么您可以简单地更新视图逻辑,其中视图是从from django.views.generic import UpdateView
继承的。
from django.views.generic import UpdateView
from django.contrib import messages
class YourUpdateView(UpdateView):
# other part of view
def form_valid(self, form):
self.object = form.save()
status = self.object.status
messages.success(self.request, f"Status updated to {status}")
return super().form_valid(form)
如果我弄错了,请在评论中详细解释。
https://stackoverflow.com/questions/67904460
复制