Django Admin datetime in EST



在我的应用程序中,我需要在EST TimeZone中的" Admin"部分中显示一些数据。我在settings.py中有以下配置:

TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = False

用户选择了不同的时区,并为他们工作正常,即;Thursday, May 16, 2019 12:00 AM EDT

,但我想在"管理员"部分中的EST时区显示DateTime。目前,它将如预期的那样在UTC中显示。我尝试了以下内容:

from datetime import datetime
from pytz import timezone  
from django.contrib import admin
TZ = timezone('EST')
@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    list_display = ('name', 'scheduled_date')
    fieldsets = (
        (None, {'fields': ('name', 'scheduled_date')}),
    )
    def scheduled_date(self, obj):
        date = datetime(obj.scheduled_date, tzinfo=TZ)
        return date

但是,管理员部分仍在UTC中显示scheduled_date

的时间态例如:
import pytz
from django.utils import timezone
from django.utils.deprecation import MiddlewareMixin

class AdminTimezoneMiddleware(MiddlewareMixin):    
    def process_request(self, request):
        if request.path.startswith('/admin'):
            timezone.activate(pytz.timezone('EST'))

不要忘记在设置上添加它。Middleware数组。

MIDDLEWARE = [
   ...
   'yourapp.AdminTimezoneMiddleware'
]

最新更新