django テンプレート システム、モデル内の関数の呼び出し 質問する

django テンプレート システム、モデル内の関数の呼び出し 質問する

次のようなテンプレートでモデルから関数を呼び出したい:

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 %}

おすすめ記事