在Django管理网站中,如何更改时间字段的显示格式?
我最近在我的网站上添加了一个新模型,并且我使用一个叫 admin.py 的文件来指定它在管理界面上应该怎么显示。这个设置运行得很好,但我就是搞不清楚怎么让我的一个日期字段在显示格式中包含秒。我现在看到的格式是“2011年8月27日,下午12:12”,而我想看到的是“2011年8月27日,下午12:12*:37*”。
4 个回答
12
如果你试过gabriel的回答但没有效果,可以试着在settings.py
文件里把USE_L10N = False
设置为假,这样对我有效。
注意,如果
USE_L10N
设置为真,那么系统会优先使用地区设置的格式,而不是你自己设置的格式。
查看详细信息:https://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT
59
我在网上查找资料时找到了这个,但我对我的应用采取了不同的方法。
要改变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的日期时间格式(如果在settings中修改,则会影响整个网站)。
这不会影响后台的日期时间过滤和排序功能,正如@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
62
在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”里添加其他需要显示的字段。