You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django中将DateTimeField的12小时制改为24小时制?

Django Admin 自定义DateTimeField显示24小时制并支持排序

方案一:自定义显示字段并绑定排序源

在你的ModelAdmin类中,给自定义显示方法加上admin_order_field属性,绑定到原creation_date字段,这样既可以按需求格式化时间,又能保留排序功能:

from django.contrib import admin
from .models import 你的模型类名

class 你的模型Admin(admin.ModelAdmin):
    list_display = ('id', '格式化创建时间',)  # 可添加其他需要显示的字段

    def 格式化创建时间(self, obj):
        return obj.creation_date.strftime('%Y-%m-%d %H:%M:%S')
    # 指定排序依据为原DateTime字段
    格式化创建时间.admin_order_field = 'creation_date'
    # 设置admin界面的字段显示名称
    格式化创建时间.short_description = '创建时间'

admin.site.register(你的模型类名, 你的模型Admin)

方案二:全局配置时间显示格式

如果希望项目中所有DateTimeField都统一用24小时制显示,直接修改settings.py的配置:

# settings.py
DATETIME_FORMAT = 'Y-m-d H:i:s'
TIME_FORMAT = 'H:i:s'

之后在ModelAdmin的list_display中直接加入creation_date即可,它会自动按配置的格式显示,且天然支持排序。

你之前的自定义方法无法排序,是因为没有指定admin_order_field,Django不知道该按哪个数据库字段进行排序操作。

内容的提问来源于stack exchange,提问作者Aidar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 10:57:04