46

我最近向我的站点添加了一个新模型,并且我正在使用 admin.py 文件来准确指定我希望它在管理站点中的显示方式。它工作得很好,但我不知道如何让我的日期字段之一在其显示格式中包含秒数。当我想看到的是“2011 年 8 月 27 日,12:12* :37 * pm”时,我只看到像“2011 年 8 月 27 日,下午 12:12”这样的值

4

3 回答 3

53

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

于 2011-08-27T19:26:59.947 回答
47

挖掘我到这里结束,但对我的应用程序应用了不同的方法。

更改 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
于 2015-09-02T14:17:08.233 回答
10

如果您尝试过 gabriel 的答案,但没有成功,请尝试设置USE_L10N = Falsesettings.py它对我有用。

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

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

于 2018-01-24T09:12:33.427 回答