Python中如何设置django-xadmin的时间格式?

我现在的 django-xadmin 的时间默认格式是 “ 2018 年 3 月 29 日 00:10 ”,但是我需要 “ 2018 年 3 月 29 日 00:10:xx ”,要加上秒。。。
找了好久就是没找到,功力不够,哪个大神能指导下呢?
Python中如何设置django-xadmin的时间格式?

3 回复

在Django-xadmin中设置时间格式,需要修改settings.py中的时间格式配置,并确保xadmin使用正确的格式化器。

首先,在settings.py中添加或修改以下配置:

# settings.py
# 设置日期和时间格式
DATE_FORMAT = 'Y-m-d'
DATETIME_FORMAT = 'Y-m-d H:i:s'
TIME_FORMAT = 'H:i:s'

# 语言和时区设置(确保与格式匹配)
LANGUAGE_CODE = 'zh-hans'  # 中文
TIME_ZONE = 'Asia/Shanghai'
USE_I18N = True
USE_L10N = False  # 必须设置为False,否则会使用本地化格式
USE_TZ = True

关键点是将USE_L10N设置为False,这样Django才会使用你自定义的格式而不是本地化格式。

如果需要在xadmin的列表页中自定义时间显示,可以在adminx.py中这样配置:

# adminx.py
import xadmin
from .models import YourModel
from xadmin.layout import Fieldset

class YourModelAdmin(object):
    list_display = ['id', 'formatted_time']
    
    def formatted_time(self, obj):
        return obj.created_at.strftime('%Y-%m-%d %H:%M:%S')
    formatted_time.short_description = '创建时间'
    
xadmin.site.register(YourModel, YourModelAdmin)

对于表单字段的显示格式,可以在ModelForm中指定:

# adminx.py
from django import forms

class YourModelForm(forms.ModelForm):
    class Meta:
        model = YourModel
        fields = '__all__'
        widgets = {
            'created_at': forms.DateTimeInput(
                format='%Y-%m-%d %H:%M:%S',
                attrs={'class': 'datetime-field'}
            )
        }

最后,如果某些字段仍然显示不正确,可能需要清除浏览器缓存或重启开发服务器。

总结:主要靠USE_L10N=False和正确的格式字符串。


在 settings 里加上
# 配置自定义的日期时间格式
DATETIME_FORMAT = 'Y-m-d H:i:s’
DATE_FORMAT = ‘Y-m-d’

非常感谢大佬,我的问题已成功解决。

回到顶部