我正在制作一个已发行音乐专辑的数据库
模型.py
class Image(models.Model):
image = models.ImageField(....
class Album(models.Model):
title = models.CharField(....
class Release(models.Model):
album = models.ForeignKey(Album)
cover_art = models.ForeignKey(Image, blank=True, null=True, on_delete=models.SET_NULL)
在我的模板中(目前我正在使用通用视图)我有:
{% for a in album_list %}
{% for r in a.release_set.all %}
{% if r.cover_art %}
# display cover art image
{% endif %}
{% endfor %}
{% endfor %}
问题是,有时一张专辑已经发行了好几次,封面都是一样的,在这种情况下,我只想显示一次图片,并附上一些文字列出它所属的发行版。
我试过了:
{% for i in a.release_set.cover_art %}
{% for i in a.release_set.cover_art_set %}
{% for i in a.release_set.all.cover_art %}
{% for i in a.release_set.all.cover_art_set %}
或者在更简单的情况下,如果有多个图像,我至少希望将图像显示得更小。
{% if a.release_set.count > 1 %} # works but displays duplicate images
{% if a.release_set.cover_art_set.count > 1 %} # doesn't work (see above)
是否可以通过反转此 ForeignKey 查找然后询问他们的孩子的集合来获得相关的对象列表?我能想到的唯一方法是在视图中组装一些元组/列表。