2013-01-31 62 views
1

我在Django中有一个字段,即models.CharFieldDjango显示charfield字段,表示分钟为hh小时,mm分钟

它存储电影的持续时间。

对于电影,90分钟持续,当我把它从一个模板,像

{{ movie.duration }} 

我想拿到1小时30分钟,而不是90分钟。

+0

如果你真的需要一种方法来弦号码转换成一个字符串时间(装饰或其他地方),你可以(在)使用time类型及其强大methods之一,它做数据如何存储?它实际上是数据库中的“90分钟”还是“90”? – voithos

+0

它的存储方式与“90”相同 – edu222

回答

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 %} 
+0

这样做更灵活。使用模板过滤器,它可以用于任何模型。 – edu222

0

您应该只使用models.TimeField而不是CharField

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 
相关问题