次のようなテンプレートでモデルから関数を呼び出したい:
class ChannelStatus(models.Model):
..............................
..............................
def get_related_deltas(self,epk):
mystring = ""
if not self.get_error_code_delta(epk):
return mystring
else:
for i in self.get_listof_outage():
item = i.error_code.all()
for x in item:
if epk == x.id:
mystring= mystring +" "+str(i.delta())
return mystring
そして、これをテンプレートから呼び出す場合:レンダリング中にchannel_status_listを次のように渡します。
channel_status_list = ChannelStatus.objects.all()
{% for i in channel_status_list %}
{{ i.get_related_deltas(3) }}
{% endfor %}
これは機能しません。何も消費しない関数を呼び出すことはできますが、パラメータがある場合に何をすればよいかわかりません。
乾杯
ベストアンサー1
テンプレートからパラメータ付きの関数を呼び出すことはできません。これはビュー内でのみ可能です。代わりに、カスタムテンプレートフィルター次のような感じになります。
@register.filter
def related_deltas(obj, epk):
return obj.get_related_deltas(epk)
これで、テンプレートで次の操作を実行できるようになりました。
{% for i in channel_status_list %}
{{ i|related_deltas:3 }}
{% endfor %}