【问题标题】:Change timezone inside Django admin在 Django admin 中更改时区
【发布时间】:2015-11-08 13:43:43
【问题描述】:

我正在使用 Django 1.8.6。日期时间以 UTC 格式存储在 PostgreSQL 数据库中。以下是我的项目范围设置:

USE_TZ = True
TIMEZONE = 'UTC'
USE_L10N = True

我想知道是否可以在 Django 管理员中显示指定时区的时间? (我是管理员的唯一用户。)谢谢。

【问题讨论】:

  • 你到底想要什么? 1) 对于某些对象的日期时间字段; 2)在管理侧边栏中; ...
  • 我希望模型的 datetime 字段在 admim 中以本地时间显示,但以 UTC 格式存储在数据库中。

标签: django django-models django-admin


【解决方案1】:

例如你的模型

class SomeModel(models.Model):
    datetime_filed = models.DateTimeField(default=timezone.now)
  1. 最简单的解决方案是将settings.TIMEZONE 更改为您本地的一个(pytz.all_timezones 之一)django 将存储datetime_filedtzinfo=<UTC> 但在所有模板中默认情况下它将被本地化......在您的应用程序模板中您可以使用这些模板标签之一https://docs.djangoproject.com/en/dev/topics/i18n/timezones/#template-tags

...

【讨论】:

  • 谢谢。如果我想在 db 中以 UTC 形式存储所有内容怎么办?在这种情况下,我必须将 TIMEZONE 设置为 UTC。
  • PostgreSQL 后端将日期时间存储为带有时区的时间戳。实际上,这意味着它将日期时间从连接的时区转换为存储时的 UTC,并从 UTC 转换为检索时的连接时区。 docs.djangoproject.com/en/1.8/topics/i18n/timezones/#postgresql
  • 所以这意味着PostgreSQL将时间存储为以秒为单位的纪元时间以及用户所在的时区。无论settings.TIMEZONE是什么,这都是一样的? settings.TIMEZONE 不影响时间在 psql 中的存储方式,它会影响显示?
  • @madzohanuse 使用 timezone.now 而不是 timezone.now(),否则会设置固定日期
  • @wasabigeek 是的)但这只是一个例子,你的评论是另一个问题的重点......无论如何我已经改变了......这里有很好的解释stackoverflow.com/a/13226368/3033586
猜你喜欢
  • 2014-11-30
  • 2013-03-05
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 2013-09-02
  • 1970-01-01
  • 1970-01-01
  • 2020-11-10
相关资源
最近更新 更多