python template 計算 - モデル内の関数を呼び出すdjangoテンプレートシステム





2 Answers

メソッドが引数を必要としない場合は、@propertyデコレータを使用してテンプレート内で通常アクセスします。

class ChannelStatus(models.Model):
    ...
    @property
    def function_you_want_as_property(self):
        mystring = ""
        ...
render 引数 model

モデルの関数を以下のようなテンプレートで呼びたいと思っています:

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.simple_tag
def related_deltas(obj, epk, second_arg):
    return obj.get_related_deltas(epk, second_arg)

テンプレート:

{% for i in channel_status_list %}
  {% related_deltas i 3 4 %}
{% endfor %}

(構文が{{ {% {{に変更されていることに注意してください。

位置パラメータを取ることができます(例: related_deltas i 3 second_arg=4 debug=true )。






Related