如何在Django中更改12小时格式?

xjreopfe  于 2023-11-20  发布在  Go
关注(0)|答案(2)|浏览(113)

我的模型中有一个DateTimeField。
当我将此字段添加到admin.py时,格式显示为4:00 pm,如何将其更改为16:00?
第一个月
如果我这么做

def time(self):
return self.creation_date.timezone().strftime('%Y-%m-%d %H:%M:%S')

字符串
时间字段未排序

yqhsw0fo

yqhsw0fo1#

你可以在Django admin中通过创建一个自定义的admin模型并覆盖date_hierarchy属性来更改时间格式。下面是你如何做到这一点:

from django.contrib import admin
from .models import YourModel

@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin):
    date_hierarchy = 'creation_date'
    date_hierarchy_drilldown = False

    def changelist_view(self, request, extra_context=None):
        self.date_hierarchy = request.GET.get('dh', 'creation_date')
        return super().changelist_view(request, extra_context=extra_context)

字符串
在这段代码中,YourModel应该被替换为模型的名称。这将改变Django管理界面中的日期格式为24小时格式。
至于排序问题,Django管理员应该自动按照降序对DateTimeField进行排序。如果排序不正确,您可能需要检查管理员模型中是否应用了任何自定义排序。
如果你想按creation_date字段排序,你可以将其添加到管理模型中的ordering属性中:

class YourModelAdmin(admin.ModelAdmin):
    ordering = ('-creation_date',)


这将在Django管理界面中按照creation_date降序对模型示例进行排序。

lxkprmvk

lxkprmvk2#

您可以使用DATETIME_FORMAT设置覆盖该格式:https://docs.djangoproject.com/en/4.2/ref/settings/#datetime-format
默认值:'N j,Y,P'(例如:2003年2月4日下午4点)
用于在系统的任何部分显示日期时间字段的默认格式。请注意,如果将USE_L10N设置为True,则区域设置指定的格式具有更高的优先级,并将被应用。请参阅允许的日期格式字符串。

相关问题