簡體   English   中英

如何基於查詢集過濾器顯示 django 消息?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM