自用户上次登录Django以来如何检查新帖子
Posted
技术标签:
【中文标题】自用户上次登录Django以来如何检查新帖子【英文标题】:How to check new posts since users last login Django 【发布时间】:2019-05-16 21:06:57 【问题描述】:简介:我有 3 个模型 user
、post
、group
。用户可以发布帖子,但是每个帖子必须属于一个组。用户必须从现有组中选择他们的帖子。用户无法添加、删除、更新群组。
此外:
用户可以成为组的成员,当他们点击某个组时。他们会看到该组中的所有帖子。
我想要什么当用户进入主页时,他们会看到自上次登录以来添加的帖子
我的模型
class Post(models.Model):
user = models.ForeignKey(User, related_name='posts')
group = models.ForeignKey(Group, related_name='posts')
title = models.CharField(max_length=250, unique=True)
message = models.TextField()
created_at = models.DateTimeField(auto_now=True)
我的观点
class Homepage(TemplateView):
template_name = 'home.html'
def get_context_data(self, **kwargs):
context = super(Homepage, self).get_context_data(**kwargs)
context['object_list'] = Group.objects.all()
context['post_list'] = Post.objects.order_by("-created_at")
#What am I doing wrong in the below code
if self.request.user.is_authenticated():
new_posts = Post.objects.filter(created_at__gt(self.request.user.last_login))
context['new_posts'] = new_posts.count()
return context
在我的模板中
<div class="list-group">
% for group in object_list %
group.name
% if new_posts > 0 %
new_posts new
% endfor %
</div>
NameError: name 'created_at__gt' 未定义
【问题讨论】:
【参考方案1】:错误是因为你错过了一个等于符号,
new_posts = Post.objects.filter(created_at__gt = self.request.user.last_login)
^^^ here
【讨论】:
做得真棒 过滤是正确的,但实际上这应该不起作用?当用户登录时,last_login 设置为 now,运行上面的过滤器应该不会产生任何帖子,因为它们都是在现在之前发布的?我们不需要previous_login 来执行此操作吗?以上是关于自用户上次登录Django以来如何检查新帖子的主要内容,如果未能解决你的问题,请参考以下文章