Django 显示相关计数

Django display related count

我目前正在尝试显示某个类别中有多少帖子。 为此,我创建了 Post 模型和类别模型(见下文):

models.py

# Categorys of Post Model
class Category(models.Model):
    title = models.CharField(max_length=255, verbose_name="Title")

    class Meta:
        verbose_name = "Category"
        verbose_name_plural = "Categories"
        ordering = ['title']

    def __str__(self):
        return self.title

#Post Model
class Post(models.Model):
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    title = models.CharField(max_length=200)
    text = models.TextField(max_length=10000)
    category = models.ForeignKey(Category, verbose_name="Category", on_delete=models.CASCADE, null=True)
    tag = models.CharField(max_length=50, blank=True)
    postattachment = fields.FileField(upload_to='postattachment/%Y/%m/%d/', blank=True, null=True)
    postcover = fields.ImageField(upload_to='postcover/%Y/%m/%d/', blank=True, null=True, dependencies=[
        FileDependency(processor=ImageProcessor(
            format='JPEG', scale={'max_width': 300, 'max_height': 300}))
    ])
    created_date = models.DateTimeField(default=timezone.now)
    published_date = models.DateTimeField(blank=True, null=True)

    def publish(self):
        self.published_date = timezone.now()
        self.save()

    def __str__(self):
        return self.title

category_list.html

{% extends 'quickblog/base.html' %}

{% block content %}
    {% for categories in categories %}
        <div>
            <h1><u>{{ categories.title }} {{ $NumCountGetHere }}</u></h1>
        </div>
    {% endfor %}
{% endblock %}

现在我不知道如何计算相关对象...?

你可以这样使用:

{% for cat in categories %}
    <div>
        <h1><u>{{ cat.title }} {{ cat.post_set.count }}</u></h1>
    </div>
{% endfor %}

模型 Post 有模型 CategoryForeignkey 字段。您可以使用管理器 category_instance.post_set 从给定的 Category 实例访问相关的 Post 实例。在 the docs.

中了解它

最后,我们在此管理器上使用方法 .count() 来获取该给定类别的相关帖子数。这样代码最终看起来像 {{ cat.post_set.count }}.