/ / DurationField format - django, django-views

Formát DurationField - django, django-views

mám DurationField definované v mojom modeli ako

day0 = models.DurationField("Duration for Monday", default=datetime.timedelta)

Keď sa to snažím zobraziť, chcem, aby bol formátovaný ako „HH: MM“ - je to vždy menej ako 24. Takže som to vyskúšal v súbore šablóny HTML:

{{ slice.day0|time:"H:M" }}
{{ slice.day0|date:"H:M" }}

Všetko, čo dostanem, je však prázdne miesto.

Čo robím zle?

odpovede:

6 pre odpoveď č. 1

A timedelta inštancia nie je time alebo a datetime, Preto nemá zmysel používať internetový obchod time alebo date filtre.

Django neprichádza so žiadnymi filtrami šablón na zobrazenie timedeltas, takže môžete buď napísať svoju vlastnú, alebo hľadať externú aplikáciu, ktorá ich poskytuje. Môžete nájsť filtre šablón Django-timedelta-field užitočné.


4 pre odpoveď č. 2

Na potomstvo: toto je to, čo som nakoniec použil. Toto je obsah stránky <app>/templatetags/datetime_filter.py:

# -*- coding: utf-8 -*-
"""Application filter for `datetime`_ 24 hours.

.. _datetime: https://docs.python.org/2/library/datetime.html
"""

from django import template
from datetime import date, timedelta

register = template.Library()

@register.filter(name="format_datetime")
def format_datetime(value):
hours, rem = divmod(value.seconds, 3600)
minutes, seconds = divmod(rem, 60)
return "{}h {}m".format(hours, minutes)

Potom v zobrazení pridajte toto:

{% load datetime_filter %}
[...]
{{ slice.day0|format_datetime }}