2011-08-27 87 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:ⅰ:■”' 等...... –

相关问题