リリースされた音楽アルバムのデータベースを作成しています
models.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 %}
問題は、アルバムが同じカバー アートで複数回リリースされている場合があることです。その場合、関連するリリースをリストするテキストとともに、画像を 1 回だけ表示したいと考えています。
私はもう試した:
{% 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 ルックアップを逆にして、関連するオブジェクトのリストを取得し、それらの子のセットを要求することは可能ですか? 私が考えることができる唯一の方法は、ビューでいくつかのタプル/リストを組み立てることです。