【问题标题】:How to get total count of many to many field to a Django model?如何获取 Django 模型的多对多字段总数?
【发布时间】:2020-10-03 18:40:10
【问题描述】:

这是一个Blog 模型,我如何从所有博客对象中获取likes 的总数?

class Blog(models.Model):
    title = models.CharField(max_length=160)
    ...
    likes = models.ManyToManyField(
        User, related_name='likes',  blank=True, default=None)

在模板中,我可以使用user.likes.count,它会返回单个用户的点赞总数,但我如何从所有用户那里获得点赞总数。

谢谢

【问题讨论】:

  • 对于给定的Blog 对象,或所有喜欢的对象(所有Users 对所有Blogs)?
  • 所有博客的所有用户(所有喜欢计数)

标签: python django model


【解决方案1】:

您可以访问BlogUser 之间的“直通”模型,并计算此直通模型的对象数:

Blog.likes<b>.through.objects.count()</b>

这里BlogBlog ,而不是单个Blog 对象。如果您因此将对 Blog 类的引用传递给模板,则可以使用以下方式呈现:

{{ Blog.likes<b>.through.objects.count</b> }}

因此,这是 all Users 对 all Blogs 给出的点赞总数。


注意:通常使用settings.AUTH_USER_MODEL [Django-doc] 引用用户模型比直接使用User model [Django-doc] 更好。更多信息可以查看referencing the User model section of the documentation

【讨论】:

    猜你喜欢
    • 2021-11-27
    • 1970-01-01
    • 2015-01-24
    • 1970-01-01
    • 2020-08-13
    • 1970-01-01
    • 2021-09-25
    • 2016-10-10
    • 2019-04-20
    相关资源
    最近更新 更多