Django:如何计算与 Django 中的类别相关的帖子?

Django: how to count posts related to a category in django?

我有一个模型 class Category 和一个模型 class Course。我想计算与模型相关的所有课程,例如:Web 开发 - 26 门课程 我不知道该怎么做,因为这是两个不同的模型。

class Category(models.Model):
    title = models.CharField(max_length=1000)

class Course(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    course_title = models.CharField(max_length=100, null=True, blank=True)
    course_category = models.ForeignKey(Category, on_delete=models.DO_NOTHING, null=True, blank=True)

首先,您需要在 course_category 字段中设置 related_name 属性。

class Course(models.Model):
    ...
    course_category = models.ForeignKey(Category, realted_name="courses" on_delete=models.DO_NOTHING, null=True, blank=True)

接下来,您可以使用此名称聚合查询,如下所示。

from django.db.models import Count
cateogries = Category.objects.annotate(number_of_courses = Count("courses")).all()

然后,每个 categories 都会有一个 number_of_courses 字段,表示课程的数量。