如何在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
相关产品推荐
相关产品推荐

