Django - 模型中的时间戳字段

Fil*_*ixo 4 python django timestamp django-models

在这里找到了同一问题的答案django 中的时间戳字段,但我认为我遗漏了一些东西 - 在 django 模型中保存时间戳不应该比创建自己的时间戳字段更容易吗?


我有一个有DateTimeField字段的模型。为了满足该领域的需要,我使用了一个datetime对象。但我刚刚意识到该datetime对象实际上并不包含时区,所以我最好直接存储时间戳,因为最初我是从时间戳中的 API 获取这些数据的。还有比上面的答案更直接的方法吗?

Wil*_*sem 6

您不需要使用datetime对象来提供DateTimeField. 您可以使用auto_now_add=\xe2\x80\xa6参数[Django-doc]或auto_now=\xe2\x80\xa6参数[Django-doc]分别存储创建或更新的时间戳。过去,存在一些问题,但据我所知,这些问题已得到解决。

\n

例如:

\n
class MyModel(models.Model):\n    created = models.DateTimeField(auto_now_add=True)\n    updated = models.DateTimeField(auto_now=True)
Run Code Online (Sandbox Code Playgroud)\n

或者您可以指定一个抽象基类,并在所有需要时间戳的模型中继承:

\n
class TimestampedModel(models.Model):\n    created = models.DateTimeField(auto_now_add=True)\n    updated = models.DateTimeField(auto_now=True)\n\n    class Meta:\n        abstract = True\n\nclass MyModel(TimestampedModel):\n    # …\n    pass
Run Code Online (Sandbox Code Playgroud)\n

对于datetime对象,您可以包含带有 的时区tzinfo。例如,您可以将时区设置为UTC:

\n
from dateutil.tz import UTC\n\nmynewdatetime = mydatetime.replace(tzinfo=UTC)
Run Code Online (Sandbox Code Playgroud)\n

  • @FilipeAleixo:时间戳通常指当前时间(就像邮局的邮票):p。这可能就是你得到糟糕搜索结果的原因:p。但如果您使用“datetime”,您确实应该包含“tz=...”来指定时区。 (2认同)