0
いくつかのフィルタと一致するビールのリストと、それぞれがタップされているバーを印刷しています。これらは数多くの関係にあります。特定の状態のものだけを表示するには、このバーのリストをフィルタリングする必要があります。Django manytomanyフィールドフィルタリスト
テンプレート内のif文を使用してこれを実現できますが、リストの長さが分からないため、最後の項目の前に「and」を付けるように書式を設定することはできません(https://stackoverflow.com/a/3649002/6180992など)。 。
私はこれが可能であるかもしれない三つの方法を考えてきたが、仕事へのいずれかを取得することはできません:
- バー関連のフィールドをフィルタリングだけでなく、ビュー
- でビールがテンプレートでリストを組み立てますテンプレート内のバー関連のフィールドをフィルタリングし、それを
- を印刷するために、再度を通じてループする前に、ここで
はコードの関連セクションです:
models.py
class Bar(models.Model):
bar = models.CharField(max_length=200, default='FinshnPig')
state = models.CharField(max_length=200,default='NY')
def __str__(self):
return self.bar
class Meta:
ordering = ('bar','region')
class Tap(models.Model):
bar = models.ManyToManyField(Bar,default='FinshnPig')
brewery = models.CharField(max_length=200)
beer = models.CharField(max_length=200)
state = models.CharField(max_length=200, default='NY')
def __str__(self):
return self.beer
views.py
f = TapFilter(request.GET, queryset=Tap.objects.filter(state="VIC"))
テンプレート:
{% for tap in filter %}
<li>
<b>{{ tap.beer }}</b>
<em>{{ tap.brewery }}</em>
@{% for bar in tap.bar.all %}{% if bar.state == "VIC" %}{{ bar.bar }}</b>{% endif %}{% include "taplists/comma.html" %}{% endfor %}
</li>
{% endfor %}
ありがとうございました!私はちょうどテンプレートの.allを削除しなければならなかったが、そうでなければこれはすごくうまくいった! – MJHorn
うれしかったよ:) –