在Django管理站点中,如何更改时间字段的显示格式?

时间:2011-08-27 19:15:39

标签: python django date-formatting

我最近在我的网站上添加了一个新模型,我正在使用admin.py文件来准确指定我希望它在管理网站中显示的方式。它工作得很好,但我无法弄清楚如何让我的一个日期字段包含其显示格式的秒数。我只看到“2011年8月27日,下午12点12分”这样的价值观。当我想要看到的是“2011年8月27日,12:12 * :37 * p.m。”

4 个答案:

答案 0 :(得分:25)

挖掘我在这里结束但是对我的应用采用了不同的方法。

更改django管理员默认格式可以为您想要的每种类型更改django语言环境格式。

将以下内容放在admin.py文件(或settings.py)上,以更改django admin的日期时间默认格式。

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

答案 1 :(得分:23)

在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”中添加任何其他所需字段。

答案 2 :(得分:4)

如果你已经尝试过gabriel的回答但是它不起作用,请尝试在USE_L10N = False中设置settings.py,这对我有效。

  

请注意,如果USE_L10N设置为True,那么区域设置指定的格式具有更高的优先级,而是将应用

请参阅:https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT

答案 3 :(得分:-1)

在Django 3中,您只需将settings.py中的变量LANGUAGE_CODE更改为'es'。