管理部分的时间不匹配

问题描述

我正在Django中构建一个应用程序,该应用程序托管在Heroku上。 我不得不在Heroku上重置数据库后开始出现问题。

enter image description here

应用程序通过API获取一些数据,然后将其与记录的时间和日期一起保存到模型中。 此模型以其对象名称显示时间和日期。

Last_update_time = models.DateTimeField(blank=False,null=False,default=timezone.Now )

def __str__(self): 
    return  "%s --- [ %s ]"  %  (self.Target_area_input_data.Name,datetime.strftime(self.Last_update_time,"%H:%M:%s %d-%m-%Y") )

然后将信息显示在模板中。

模板中显示的时间是正确的(对应于我的PC时钟显示的时间,在示例中为22:33),但是当我在Django admin中访问模型时,时间早了两个小时(20:33)在示例中)。

enter image description here

奇怪的是,当我访问对象字段视图时,时间是正确的(示例中为22:33)。

enter image description here

可能是什么问题?

在我的设置中,我有

TIME_ZONE = 'Europe/Berlin'
USE_TZ = True

我试图改变

USE_TZ = False

仅导致对象字段视图中的时间比其他时间早两个小时(示例中为20:33),并显示消息“您比服务器时间早2小时”。

更新:

也许我错了,数据库重置与此错误无关。

但是,我可以确定,因为我已经设置了:

TIME_ZONE = 'Europe/Berlin'
USE_TZ = True

即使Django admin的模型对象列表视图以UTC格式显示时间,数据库也会为其对象显示正确的时间。 (我不确定是否可以设置出现在模型对象名称中的时间的时区。)

解决方法

实际上我错了:数据库重置与该错误无关。

事实证明,Django本身不允许更改管理员的时区,因为管理员使用的所有时间数据都具有相同的界标。就像所有管理员都应使用相同的度量单位一样。

但是,as suggested here可以为每个管理员用户设置时区,以便每个管理员都能看到根据其时区表示的admin部分的日期数据。