在我的应用程序中,我需要在EST时区的管理部分显示一些日期时间。我在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但是,管理部分仍然以协调世界时显示scheduled_date的时间
发布于 2019-05-23 04:47:11
您可以创建一个中间件,它将在运行时为来自Admin的每个请求更改时区。
例如:
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'))不要忘了在settings.MIDDLEWARE数组中添加它。
MIDDLEWARE = [
...
'yourapp.AdminTimezoneMiddleware'
]https://stackoverflow.com/questions/56261795
复制相似问题