2017-12-19 41 views
0

私はDjangoのテンプレートタグフィルタで2つのパラメータを渡す方法を知っていますが、3つのパラメータをどのように使用するか混乱します。django templatetagsフィルタに3つの引数を渡すには?

マイテンプレートtags-

@register.filter("status_of_booking") 
def status_of_booking(status,create_date,from_time): 
    print create_date 
    print status 
    return 'hola' 

と私はこのような3つの引数を渡していますし、それがエラーを示している: -

{{ item.status|status_of_booking:item.classSession.date,item.id }} 

とそれが示しエラー: status_of_booking requires 3 arguments, 2 provided

+0

実際に行うと思われるフィルタは何ですか?おそらく、3つの引数を必要としない、それを書く良い方法があります。 –

+0

よく私は私のcreated_dateとfrom_timeをcurrent_dateと比較し、それが返されるかflaseされるかのステータスに基づいて私は予約状況を返すでしょう –

答えて

3

A Djangoテンプレートフィルタには、引数が1つまたは1つあります。複数の引数は使用できません。その後、

{{ item|status_of_booking }} 

あなたが本当に複数の引数が必要な場合は、になります。

あなたのケースでは、あなたの代わりにstatusの、最初の引数としてitemを使用することができます。

@register.filter("status_of_booking") 
def status_of_booking(item): 
    print item.create_date 
    print item.status 
    return 'hola' 

を次に、あなたのテンプレートには、フィルタからテンプレートタグにstatus_of_bookingを変更する必要があります。

@register.simple_tag 
def status_of_booking(status, create_date, from_time): 
    print create_date 
    print status 
    return 'hola' 

にテンプレートを変更してください:

{% status_of_booking item.status item.classSession.date item.id %} 
+0

最初に感謝しましたありがとう –