首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >EST中的Django Admin datetime

EST中的Django Admin datetime
EN

Stack Overflow用户
提问于 2019-05-23 01:02:43
回答 1查看 277关注 0票数 0

在我的应用程序中,我需要在EST时区的管理部分显示一些日期时间。我在settings.py中有以下配置

代码语言:javascript
复制
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = False

用户选择了不同的时区,可以很好地工作,例如:Thursday, May 16, 2019 12:00 AM EDT

但是我想在管理部分显示EST时区中的datetime。目前,它将按照预期在UTC中显示所有时间。我尝试了以下几种方法:

代码语言:javascript
复制
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的时间

EN

回答 1

Stack Overflow用户

发布于 2019-05-23 04:47:11

您可以创建一个中间件,它将在运行时为来自Admin的每个请求更改时区。

例如:

代码语言:javascript
复制
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数组中添加它。

代码语言:javascript
复制
MIDDLEWARE = [
   ...
   'yourapp.AdminTimezoneMiddleware'
]
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56261795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档