自用户上次登录Django后如何检查新帖子

时间:2018-12-16 03:54:59

标签: django python-3.x django-models django-views django-queryset

简介:我有3个模型userpostgroup。用户可以发表帖子,但是每个帖子必须属于一个组。用户必须从现有组中选择其帖子。用户无法添加,删除或更新群组的内容。

此外:

用户可以在单击特定组时成为组的成员。他们会看到该组中的所有帖子。

我想要的:当用户进入首页时,他们会看到自上次登录后添加的帖子

enter image description here

我的模型

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:名称'created_at__gt'未定义

1 个答案:

答案 0 :(得分:2)

错误是因为您错过了等于符号

new_posts = Post.objects.filter(created_at__gt = self.request.user.last_login)
                                              ^^^ here