当我使用想要数量不同的数值时得到一个数字而不是字段名称

时间:2019-05-21 11:15:14

标签: python django django-models

我是Django的新手

我有包含类别的表Category

class Category(models.Model):

    category = models.CharField(max_length=100)

    def __str__(self):
        return self.category

    class Meta:
        verbose_name_plural = "categories"

以及使用“类别”表作为外键的表“ Post”

class Post(models.Model):
    title = models.CharField(max_length=100)
    category = models.ForeignKey(Category, on_delete=models.CASCADE )
    content = RichTextUploadingField()
    date_posted = models.DateTimeField(default=timezone.now)

但是使用下面的查询我得到的是

Post.objects.values('category').order_by('category').annotate(the_count=Count('category'))

结果

<QuerySet [{'category': 2, 'the_count': 5}, {'category': 3, 'the_count': 4}]>

我想要的是

<QuerySet [{'category': "fashion", 'the_count': 5}, {'category': "travel", 'the_count': 4}]>

我该如何解决这个问题

谢谢!

1 个答案:

答案 0 :(得分:3)

您需要在查询中指定字段,然后访问模板上的那些“值”。

views.py

posts = Post.objects.values('category__category').order_by('category').annotate(the_count=Count('category'))

template.html

{% for post in posts %}
    {{ post.category__category }} - {{ post.the_count }}
{% endfor %}