2011-08-27 89 views
17

我最近在我的網站中添加了一個新模型,並且我使用admin.py文件來指定我希望它在管理站點中的顯示方式。它工作的很好,但我無法弄清楚如何讓我的某個日期字段包含顯示格式的秒數。我只看到像「2011年8月27日,12點12分」這樣的價值觀。當我想看到的是「2011年8月27日,12:12 * :37 *下午」在Django管理站點中,如何更改時間字段的顯示格式?

回答

13

試試這個在的ModelAdmin:

def time_seconds(self, obj): 
    return obj.timefield.strftime("%d %b %Y %H:%M:%S") 
time_seconds.admin_order_field = 'timefield' 
time_seconds.short_description = 'Precise Time'  

list_display = ('id', 'time_seconds',) 

在模型與相應的字段更換「timefield」,當然,添加在「list_display」任何其他所需的字段。

+10

做這樣的事情打破了使用管理自動過濾器。 – donatello

+2

我想你的意思是[strftime](http://docs.python.org/3.3/library/time.html#time.strftime) – Martin

+1

有沒有一種方法來格式化時間戳,但保留在管理中保留排序功能? –

17

挖掘我在這裏結束,但在我的應用程序中應用了不同的方法。

更改django管理員默認格式可以改變你想要的每種類型的django語言環境格式。

在你的admin.py文件(或settings.py)中添加以下內容,以更改django管理員的日期時間默認格式。

from django.conf.locale.es import formats as es_formats 

es_formats.DATETIME_FORMAT = "d M Y H:i:s" 

它將更改該文件(或整個網站,如果在設置中)ModelAdmin的日期時間格式。

它不會中斷管理日期時間過濾器並以@Alan命令功能Illing在註釋中指出。

希望這有助於在未來


額外的信息:

你可以改變它在Django每個可用的語言環境,這是很多。

您可以使用此方法

from django.conf.locale.es import formats as es_formats 

es_formats.DATETIME_FORMAT 
es_formats.NUMBER_GROUPING 
es_formats.DATETIME_INPUT_FORMATS 
es_formats.SHORT_DATETIME_FORMAT 
es_formats.DATE_FORMAT    
es_formats.SHORT_DATE_FORMAT 
es_formats.DATE_INPUT_FORMATS  
es_formats.THOUSAND_SEPARATOR 
es_formats.DECIMAL_SEPARATOR  
es_formats.TIME_FORMAT 
es_formats.FIRST_DAY_OF_WEEK  
es_formats.YEAR_MONTH_FORMAT 
es_formats.MONTH_DAY_FORMAT 
+2

記得要像''從django.conf.locale.en導入格式那樣改變你實際使用的本地類型爲en_formats'然後'en_formats。DATETIME_FORMAT =「dmY H:i:s」' –

+0

Just abriviating antkowcz回答: 英文使用:'從django.conf.locale.en導入格式爲en_formats,然後是en_formats.DATETIME_FORMAT =「dmY H:i:s」 ' 西班牙使用: '從django.conf.locale.es導入格式作爲es_formats es_formats.DATETIME_FORMAT = 「d MYH:ⅰ:■」' 等...... –

相關問題