2012-02-12 9 views
0

私はmodels.pyに次のコードを持っている:私は今、私のテンプレートでget_remaining_time機能を使用したいこのテンプレート関数呼び出しが機能しないのはなぜですか?

class DealInstance(models.Model): 
    start = models.DateTimeField() 
    end = models.DateTimeField() 

    def get_remaining_time(self): 
     return end - start # returns a datetime.timedelta object 

を:

<p>Time diff: {{ deal_instance.get_remaining_time.days }}</p> 

しかし、これは私が変更しても、動作しません。 get_remaining_timeを使用して文字列リテラルを返します。

このコードはhttps://docs.djangoproject.com/en/dev/topics/templates/#accessing-method-callsに基づいています。

+0

エラーメッセージが表示されますか? (例えば、 'return self.end - self.start'を持っているはずです) – second

+0

エラーメッセージはありません。それはテンプレートの関数呼び出しからの出力を表示しない点を除いて、表示をうまく読み込みます。 'return self.end - self.start'は違いをもたらさなかった。 – jtfairbank

+0

デバッグに関して何をしましたか? (例えば、あなたのメソッドが単に文字列を出力するのであれば?datetime?) – second

答えて

0

式の各部分を(テンプレート内から)印刷してみてください。例えば。 [{{deal_instance}}] [{{deal_instance.get_remaining_days}}] [{{deal_instance.get_remaining_days.days}}](注:空の文字列が見えるように、式の周りに[]を使用します)。それらのうちの1つが無効で、多少使いすぎのテンプレートリゾルバが単に空の文字列を返すだけであることがわかります。

また、返されたページのソースを見てください。式の出力がオブジェクト参照である場合、デフォルトでは< some sort of class info >形式で出力されます。ほとんどのブラウザでは偽のHTMLタグとみなされ、無視されます。

関連する問題