Django: Вложенный цикл for не работает должным образом
У нас есть две таблицы, которые имеют отношения "многие к одному".
в models.py :
class Author(models.Model):
    name     = models.CharField(max_length=100, null=False)
    username = models.CharField(max_length=35, null=False)
    def __str__(self):
        return self.name
class Article(models.Model):
    CATEGOTY = (
        ('programming', 'programming'),
        ('other', 'other')
    )
    title    = models.CharField(max_length=100, null=False)
    content  = models.TextField(null=False)
    category = models.CharField(max_length=100, choices=CATEGOTY, null=False)
    creation = models.DateTimeField(auto_now_add=True)
    author   = models.ForeignKey(Author, on_delete=models.CASCADE)
    def __str__(self):
        return self.title
and in views.py:
def articles(request):
    authors                = Author.objects.all()
    articles               = Article.objects.all()
    totalArticles          = articles.count()
    authorAticles = Author.objects.annotate(numberOfArticles=Count('article'))
    return render(request, 'articles/article.html', {
        'articles'     : articles,
        'authors'      : authors,
        'totalArticles': totalArticles,
        'authorAticles': authorAticles
        })
и html-код:
<div class="container mb-3 p-3" id="author-aricle">
    <div class="row">
        <div class="col-sm">
            totle articles: {{totalArticles}}
        </div>
        {% for author in  authors %}
            <div class="col-sm">
                {{author}}: 
                {% for authorAticle in authorAticles %}
                    {{authorAticle.numberOfArticles}}
                {% endfor %}
                articles
            </div>
        {% endfor %}
    </div>
</div>
Я хочу, чтобы html-вывод отображал количество статей каждого автора рядом с его именем. Это означает, сколько статей у каждого автора? Я хочу, чтобы html-вывод выглядел следующим образом:
автор1: 2 статьи
автор2: 3 статьи
автор3: 3 статьи
etc
но этого не происходит, и на выходе получается:
автор1: 3 3 2 статьи
автор2: 3 3 2 статьи
автор3: 3 3 2 статьи
 Проблема в том, что authorAticles = Author.objects.annotate(numberOfArticles=Count('article')) возвращает Авторов, а не Статьи, и не их количество.
Поэтому далее здесь:
{{author}}: 
{% for authorAticle in authorAticles %}
Для каждого автора выполняется итерация по всем авторам.
 Что-то вроде {{ author.article_set.count }} должно работать, чтобы подсчитать их все для каждого автора.
Или, если вы предпочитаете использовать annotate, просто добавьте его в фильтрацию авторов:
authors = Author.objects.annotate(numberOfArticles=Count('article'))
и затем ссылаться на него в шаблоне:
{{ author }}:
{{ author.numberOfArticles }}