Django管理员不显示自定义方法返回的正确时区值

时间:2017-06-07 13:05:30

标签: python django datetime django-models django-admin

我的模型中有一个表字段,它存储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。

0 个答案:

没有答案