0
我有一个模型“成员”,其中有两个字段“created_at”和“updated_at”。 原来,他们被定义如下:记录创建和更新时间不存储在localtime django
created_at = models.DateTimeField(auto_now_add=True, null=True)
updated_at = models.DateTimeField(auto_now_add=True, null=True)
我settings.py有USE_TZ =真和TIME_ZONE = “美国/纽约”。
我有一个自定义的中间件,用于激活用户选择的时区。
current_tz = pytz.timezone("<user defined timezone>")
timezone.activate(current_tz)
然后,我更新字段存储用户本地时间:
created_at = models.DateTimeField(default= lambda: timezone.localtime(timezone.now()), null=True)
updated_at = models.DateTimeField(default= lambda: timezone.localtime(timezone.now()), null=True)
现在,当我更新会员记录,并检查的updated_at时间,其显示相同的UTC时区,而不是用户的本地时间。
难道Django的总是存储在UTC在DB datetime值还是我失去了一些东西在这里
此代码将只使用服务器的本地时间,而不是用户。 –
我编辑了我的问题,提到了一个中间件,可根据用户选择的时区激活时区。那么,如何让它使用用户的localtime而不是服务器呢? – user2722127
够公平的。但这似乎仍然是一个糟糕的主意。为什么你要存储本地时间,而不是 - 如[文档](https://docs.djangoproject.com/en/1.11/topics/i18n/timezones/)中明确推荐的那样 - 存储UTC和输出转换? –