【问题标题】:count the number of posts计算帖子数量
【发布时间】:2022-11-22 20:37:33
【问题描述】:

我创建了一个网站,想统计用户生成的帖子。 我尝试按如下方式进行:

models.py
class Blog(models.Model):
    user = models.ForeignKey(
        User,
        related_name='user_blogs',
        on_delete=models.CASCADE
    )
    category = models.ForeignKey(
        Category,
        related_name='category_blogs',
        on_delete=models.CASCADE
    )

    title = models.CharField(
        max_length=250
    )
    slug = models.SlugField(null=True, blank=True)


    banner = models.ImageField(upload_to='blog_banners')
    description = RichTextField()
    created_date = models.DateField(auto_now_add=True)

    def __str__(self) -> str:
        return self.title

    def save(self, *args, **kwargs):
        updating = self.pk is not None
        
        if updating:
            self.slug = generate_unique_slug(self, self.title, update=True)
            super().save(*args, **kwargs)
        else:
            self.slug = generate_unique_slug(self, self.title)
            super().save(*args, **kwargs)

模板

<span>Posts: <strong>{{account.user_blogs.count}}</strong></span>

但它不起作用 问题是什么?我应该重写代码吗?

【问题讨论】:

  • 你在统计logged in user的帖子吗?
  • @Lars 当然可以

标签: django django-models


【解决方案1】:

您可以使用 .count() 来计算 request.user 的所有帖子,例如 -

def some_view(request):
    count_posts = Blog.objects.filter(user=request.user).count()

    context = {"count_posts": count_posts}
    return render(request, 'template.html', context)

模板.html

{{count_posts}}

【讨论】:

  • 需要写在views.py里吗?
  • 是的,我上面提到的查询可以在views.py。由于您没有发表您的观点,所以我不知道您的观点是什么样的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-27
  • 2013-11-30
  • 2022-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多