我在 Django 中有一个字段是models.CharField
.
它存储电影的持续时间。
对于持续 90 分钟的电影,当我从模板中调用它时,类似于
{{ movie.duration }}
我想要 1 小时 30 分钟而不是 90 分钟。
我在 Django 中有一个字段是models.CharField
.
它存储电影的持续时间。
对于持续 90 分钟的电影,当我从模板中调用它时,类似于
{{ movie.duration }}
我想要 1 小时 30 分钟而不是 90 分钟。
我喜欢 duration_formatted 函数的想法,但我会推荐模板过滤器与模型
from django import template
register = template.Library()
@register.filter('duration_format')
def duration_format(value):
value = int(value)
h = 'hour'
m = 'minute'
hours = int(value/60)
minutes = value%60
if hours <> 1:
h += 's'
if minutes <> 1:
m += 's'
return '%s %s , %s %s' % (hours, h, minutes, m)
然后在你的模板中你可以(假设过滤器在 my_template_tags.py 之类的东西中)
{% load my_template_tags %}
{% block content %}
<p>{{ film.title }} - {{ film.duration|duration_format }}</p>
{% endblock %}
您可能应该只使用models.TimeField
而不是CharField
.
如果您真的需要一种将字符串数字转换为字符串时间的方法(在装饰器中或任何地方),您可以(过度)使用time
类型及其强大的方法之一:
from datetime import time
def num_to_time(snum):
num = int(snum)
ttime = (num / 60, num % 60)
return time.strftime('%k h %M s')[1:]
#[1:] just because %k produces one leading space