2013-01-31 64 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 
相關問題