注意:我删除了之前存在的问题,并在此处仅提供相关信息.
我们的数据库服务器(RH)指定了TIME_ZONE ="Europe/London".并且,在Django settings.py中,我们指定TIME_ZONE ="America/New_York".
并且,在我的Model类中,我指定了:
created = models.DateTimeField(editable=False,auto_now=False, auto_now_add=True)
modified = models.DateTimeField(editable=False,auto_now=True, auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
当我再去查看管理站点中的数据时,我得到UTC/GMT时间而不是东部时间.
我认为所有的时间都是由Django自动调整的,因为我将"America/New_York"指定为Django的时区.
任何帮助/澄清表示赞赏.
谢谢Eric
JCo*_*ton 12
依赖日期/时间'automagic'是危险的,这些auto_add模型参数是一个陷阱.始终了解您正在处理的时区.Python通过将tzinfo成员附加到其datetime对象来简化这一过程.虽然默认情况下这些对象是"天真的",但我建议您始终附加tzinfo详细信息.仍然Python需要一些python-dateutil或pytz(我使用的)的额外帮助.这是一个通用规则 - 始终将您的日期时间存储在数据库中作为UTC.
为什么?您的用户可能在不同的本地人,移动电话和笔记本电脑旅行,服务器配置错误或镜像在不同的时区.这么多头疼.日期时间永远不应该是幼稚的,如果它们(如在数据库中)并且您需要上下文,则还要在表中包含时区字段.
所以在你的情况下.
如果你使用pytz,localize()方法很棒.Python的datetime对象具有有用的replace()和astimezone().
还有一点需要注意,如果您的数据库是时区(如MySQL),请确保您的日期时间是UTC,然后使用replace(tzinfo = None),因为数据库连接器无法处理tz感知对象.
这里是一个线程与Django的auto_now领域的细节.
| 归档时间: |
|
| 查看次数: |
15747 次 |
| 最近记录: |