我最近向我的站点添加了一个新模型,并且我正在使用 admin.py 文件来准确指定我希望它在管理站点中的显示方式。它工作得很好,但我不知道如何让我的日期字段之一在其显示格式中包含秒数。当我想看到的是“2011 年 8 月 27 日,12:12* :37 * pm”时,我只看到像“2011 年 8 月 27 日,下午 12:12”这样的值
3 回答
在 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”中添加任何其他需要的字段。
挖掘我到这里结束,但对我的应用程序应用了不同的方法。
更改 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
如果您尝试过 gabriel 的答案,但没有成功,请尝试设置USE_L10N = False
,settings.py
它对我有用。
请注意,如果 USE_L10N 设置为 True,则区域设置指定的格式具有更高的优先级,并将改为应用
请参阅:https ://docs.djangoproject.com/en/2.0/ref/settings/#std:setting-DATETIME_FORMAT