Sar*_*ica 5 django django-views
我有一个DurationField在我的模型定义
day0 = models.DurationField('Duration for Monday', default=datetime.timedelta)
Run Code Online (Sandbox Code Playgroud)
当我试图查看它时,我希望它格式化为"HH:MM" - 它总是小于24.所以,我在HTML模板文件中尝试了这些:
{{ slice.day0|time:'H:M' }}
{{ slice.day0|date:'H:M' }}
Run Code Online (Sandbox Code Playgroud)
但是,我得到的只是一个空的空间.
我究竟做错了什么?
一个timedelta实例是不是一个time或一个datetime.因此,使用time或date过滤器没有意义.
Django没有任何模板过滤器来显示timedeltas,因此您可以自己编写,也可以寻找提供它们的外部应用程序.您可能会发现django-timedelta-field中的模板过滤器很有用.
为了后代:这是我最后使用的内容。这是内容<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)
Run Code Online (Sandbox Code Playgroud)
然后在视图中添加:
{% load datetime_filter %}
[...]
{{ slice.day0|format_datetime }}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2357 次 |
| 最近记录: |