二阶关系的Django模板计数

Django template count of second order relationship

我正在通过 Django 模型使用关系数据库并具有以下 类:

class EventSite(models.Model):
    name = models.CharField(....etc.)
class Artist(models.Model):
    jobsite = models.ForeignKey(JobSite, related_name="jobsite", null=True....etc.)
    is_british = models.BooleanField(default=False)
class Concert(models.Model):
    event = models.ForeignKey(EventSite, related_name="event_concert", null=True....etc.)
    artists = models.ManyToManyField(Artist, related_name="artist_conerts", null=True....etc.)        

所以每个音乐会都与一个活动站点相关,并且可以有多个艺术家。在我的 html 模板中,我需要获得与事件相关的每个音乐会上的艺术家总数。 (见图)

所以我试过的 html 看起来像:

{% for site in event_sites %}
 {{site.event_concert.all.artists.count}},
{% endfor %}

所以对于我的场景,我希望向用户显示: 12,3,0 但它现在只是返回一个空字符串。

我似乎找不到解决方案,我怀疑这是因为我没有正确的术语来描述我想要得到的东西。在某些情况下,我还必须只计算英国艺术家。任何帮助将不胜感激!

我可以考虑在视图或模型中以两种方式进行。我会这样做的方式是在模型中创建方法。

...
class EventSite(models.Model):
    name = models.CharField(max_length=100)

    def get_site_artists(self):
        artists = 0
        for concert in self.event_concert.all():
            artists += concert.artists.all().count()
        return artists
...

然后像这样在模板中使用它:

{% for site in event_sites %}
 {{site.get_site_artists}},
{% endfor %}