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

新手上路,请多包涵

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

原文由 Trindaz 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 510
2 个回答

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

原文由 Gabriel Ross 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

更改 django admin 默认格式可以通过为您想要的每种类型更改 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 发布,翻译遵循 CC BY-SA 3.0 许可协议

推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏