Django: как подсчитать посты, относящиеся к категории в django?

У меня есть класс модели Category и класс модели Course. Я хочу подсчитать все курсы, которые связаны с моделью, например: Web Devlopment - 26 Courses я не знаю, как это сделать, поскольку это две разные модели.

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)

Сначала необходимо установить атрибут related_name в поле course_category.

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, в котором указывается количество курсов.

Вернуться на верх