[英]How to show django messages based on queryset filter?
我想根據我的過濾器顯示消息。
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 語句后,我在更改任何 object 的狀態時一次收到三條消息。
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
您是否嘗試顯示單個 object 的狀態更新? 如果是這樣,那么您可以簡單地更新您的視圖邏輯,其中視圖是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)
如果我弄錯了,請在評論中詳細解釋。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.