データベース内のすべての原稿のリストを取得し、それぞれの棚マークを印刷しようとしています。それらが他の原稿にリンクされている場合は、それらの原稿の棚マークも印刷します。
私のモデルは次のようになります。
class MSS(models.Model):
shelfmark = models.CharField(max_length=50)
MSSLink = models.ManyToManyField('self',through='MSSLink',symmetrical=False)
[...]
class MSSLink(models.Model):
link1 = models.ForeignKey('MSS', related_name='First_MSS')
link2 = models.ForeignKey('MSS', related_name='Second_MSS')
[...]
これがviews.pyのコードです
def show_all_MSS(request):
all_MSS = MSS.objects.select_related().all() # get all MSS
t = loader.get_template('list.html')
c = Context({'all_MSS': all_MSS, })
return HttpResponse(t.render(c))
問題は、私のテンプレートで何をするかです。このようなことを考えましたが、for ループ内の現在の MS が別の MS にリンクされているかどうかをテストする方法と、リンクされている場合はそれらのシェルフマークを表示する方法がわかりません。
{% if all_MSS %}
<ul>
{% for i in all_MSS %}
<li><a href="/MSS/{{ i.shelfmark}}/">{{ i.shelfmark }}</a></li>
{% if i.MSSLink %}
<p>This MS is linked to the following MSS: {{ i.MSSLink.link1 }}</p>
{% endif %}
{% endfor %}
</ul>
{% else %}
<p>No MSS found</p>
{% endif %}