【问题标题】:Django: How to display an older version of a queryset in template that has been modified in views.py?Django:如何在views.py中修改的模板中显示旧版本的查询集?
【发布时间】:2015-03-16 02:59:08
【问题描述】:

我正在使用django-notifications 在我的应用程序中创建未读邮件的收件箱。而且我有一个非常基本的视图,可以查询某个收件人的所有未读消息,然后将未读的 BooleanField 更改为 False,将它们区分为已读:

 def inbox(request):
 ...
 newmessages = Notification.objects.filter(recipient=User, unread=True)
 read = User.notifications.mark_all_as_read(recipient=User)
 return render(request, 'myapp/inbox.html', {'newmessages': newmessages}) 

在我的模板中,我只想使用 {{newmessages}} 显示查询集

但是在这种方法中,最终发生的结果是 newmessages 查询集最终为空,因为它们都被标记为已读。我怎样才能做到这一点,以便在我的模板中仅显示单页访问的未读消息,并在我的 newmessages 查询集仍保留未读消息时立即在后端将未读值变为 False?基本上,我想要一种在向用户显示新消息的查询集之后将消息标记为已读的方法,但是在我目前的方法中,我的查询集在我可以向用户显示未读消息之前被清空。

【问题讨论】:

    标签: django


    【解决方案1】:

    在将消息标记为已读之前将查询集缓存在列表中:

    newmessages = list(Notification.objects.filter(recipient=User, unread=True))
    

    【讨论】:

    • 工作就像一个魅力谢谢。简单的问题,简单的答案。谢谢你。
    猜你喜欢
    • 1970-01-01
    • 2012-05-28
    • 2023-03-07
    • 2019-12-19
    • 2017-01-17
    • 2021-10-03
    • 2021-11-17
    • 2020-10-17
    • 2016-03-16
    相关资源
    最近更新 更多