的时间态例如:
在我的应用程序中,我需要在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'
]