我的模型中有一个表字段,它存储tz感知日期时间为UTC,以及在另一个tz中显示日期时间的方法,如下所示 -
from django.db import models
import datetime
import pytz
class Game(models.Model):
start_time = models.DateTimeField(default=datetime.datetime.utcnow,
blank=True,null=True)
def start_time_as_et(self):
'''returns start_time as ET, not as UTC'''
eastern = pytz.timezone('US/Eastern')
return self.start_time.astimezone(eastern)
我的admin.py有 -
from django.contrib import admin
from g.models import Game
class GameAdmin(admin.ModelAdmin):
list_display = ('start_time_as_et',)
我认为应该在管理界面中显示日期时间的ET版本,但我仍然在管理界面中显示UTC。我尝试从start_time值中删除默认值,但这并没有改变任何内容。我不确定我是否遗漏了一些关于它如何工作的东西,或者它是否仅适用于True / False值(如Django教程中)。是的,TZ设置在settings.py中设置,因此不是问题。我做了一些谷歌搜索,但无法确定是否有人在此之前或我如何解决这个问题。
我在Ubuntu 16.04上使用Django 1.11.x,Python 3.5.2。