Django显示charfield字段,表示分钟为hh小时,mm分钟

时间:2013-01-31 20:28:25

标签: django

我在Django中有一个models.CharField字段。

它存储电影的持续时间。

对于持续90分钟的电影,当我从模板中调用它时,类似

{{ movie.duration }}

我想要1小时30分钟而不是90分钟。

2 个答案:

答案 0 :(得分:4)

我喜欢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 %}

答案 1 :(得分:0)

您应该只使用models.TimeField代替CharField

如果你真的需要一种方法将字符串编号转换为字符串时间(在装饰器或任何地方),你可以(使用time类型和强大的methods之一)完成它。 :

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