は、私は私のテンプレートではリリースされた音楽アルバムDjangoはForeignKeyの関連モデルの明確な「子供のリストを取得(およびテンプレートでこれを行う?)
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 %}
問題は時々アルバムは、私が唯一の画像を表示したいのですが、その場合には、同一のカバーアート、で数回リリースされているということです一度、ウィそれが関係するリリースを記載したテキスト。
私が試してみた:
{% 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 %}
それとも単純な場合には、私は、少なくともそれらの2つ以上が存在する場合、画像が小さく表示したいと思います。
{% 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)
この外部キーの参照を元に戻し、その子のセットを尋ねると、関連するオブジェクトのリストを取得できますか?私が考えることができる唯一の方法は、ビュー内にいくつかのタプル/リストを組み立てることです。私はこの権利理解している場合
ああ、もちろん、それはどういたしまして私の心を失った:)良い解決策。 –
すばらしい答え...良いアイデアだが、私の実装に問題がある。私の「ForeginKey」関係は別のアプリの別のモデルです。私はこれがまだ動作すると思っていました。単にそのモデルをインポートするだけでしたが、関係に関係する両方のアプリケーションで 'ImportError'を引き起こしているようです。何か案は? – nicorellius
特に、外部キーが他のアプリで定義されている場合、そのアプリは既にこのモジュールからモデルをインポートしているため、循環インポートのように聞こえます。ここでimport文を 'other_app import model'から' def distinct_cover_images(self) 'の行の関数定義の中に移動してみることができます – nimasmi