Django -Отображение списка категорий поста с номером поста

Здравствуйте, я пытаюсь сделать шаблон в django, который отображает таблицу категорий постов и количество постов вместе с ней. Я не могу сделать это правильно, используя annotate при выполнении запросов к моей модели.

вот так enter image description here

views.py

categorylistcount = Post.objects.all().annotate(posts_count=Count('category'))
for obj in categorylistcount: 
    print(obj.category + ' : ' + obj.categories_count) #test

вместо этого я получаю список постов, который имеет ключ posts_count со значением 1

models.py

class Post(models.Model):
    title = models.CharField(max_length=255)
    author = models.ForeignKey(
        get_user_model(),
        on_delete=models.CASCADE
    )
    body = models.TextField()
    category = models.CharField(max_length=64, default="Uncategorized")
    date = models.DateTimeField(auto_now_add=True)
    
    def __str__(self):
        return self.title + ' | ' + str(self.author)
    
    def get_absolute_url(self):
        return reverse('blog:post-detail', kwargs={"pk":  self.pk})
    
class Category(models.Model):
    name = models.CharField(max_length=225)
    
    def __str__(self):
        return self.name

где я промахнулся? Спасибо

Итак, после глубокого понимания модели и querysetapi в документах django, я немного изменил свои модели и то, как я получаю список объектов

В models.py не было связи между моделью Post и моделью Category, поэтому даже если можно запросить список категорий с количеством постов, используя только модель Post, неправильно не использовать модель categories. (я использую ее только для того, чтобы сделать значение опций в моем select input на шаблоне first)

Models.py

category = models.ForeignKey(Category, on_delete=models.CASCADE)

имея связь с категориями, вы можете сделать запрос к объекту категорий и добавить количество постов с помощью annotate.

categories_list = Category.objects.annotate(posts_count=Count('post'))
print(categories_list.values())

об этом говорится в документации django aggregation, https://docs.djangoproject.com/en/4.0/topics/db/aggregation/ надеюсь, это поможет кому-нибудь, кто также застрял в составлении запросов

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