二阶关系的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 %}
我正在通过 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 %}