Почему этот вызов функции шаблона не работает? - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть следующий код в моем models.py:

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

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

Теперь я хочу использовать функцию get_remaining_time в моем шаблоне:

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

Однако это не сработает, даже если я изменю get_remaining_time на строковый литерал.

Этот код основан на https://docs.djangoproject.com/en/dev/topics/templates/#accessing-method-calls.

1 Ответ

0 голосов
/ 13 февраля 2012

Попробуйте напечатать (из шаблона) каждую часть выражения. Например. [{{deal_instance}}] [{{deal_instance.get_remaining_days}}] [{{deal_instance.get_remaining_days.days}}] (Примечание: я использую [] вокруг выражений, чтобы были видны пустые строки). Возможно, вы обнаружите, что один из них недействителен, и слишком упрощенный распознаватель шаблонов просто возвращает пустую строку.

Кроме того, взгляните на источник возвращаемой страницы. Если вывод выражения является ссылкой на объект, то по умолчанию он будет распечатан в формате < some sort of class info >, который большинство браузеров будет считать поддельным HTML-тегом и игнорировать его.

...