получить число вместо имени поля, когда я использую различные значения с его счетчиком - PullRequest
1 голос
/ 21 мая 2019

Я очень новичок в 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", которая использует таблицу "Category" в качестве внешнего ключа

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 Ответ

3 голосов
/ 21 мая 2019

Вам необходимо указать поле в запросе, а затем получить доступ к этим «значениям» в шаблоне.

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 %}
...