在此处找到同一问题的答案 Timestamp fields in django但我想我遗漏了一些东西——在 Django 模型中保存时间戳不应该比创建自己的时间戳字段更容易吗?
我有一个包含 DateTimeField
字段的模型。为了提供该字段,我使用了一个 datetime
对象。但我刚刚意识到 datetime
对象实际上并不包含时区,所以我最好直接存储时间戳,因为最初我是从 API 获取时间戳中的数据。有比上面的答案更直接的方法吗?
最佳答案
您不需要使用 datetime
对象来提供给 DateTimeField
。您可以使用 auto_now_add=…
parameter [Django-doc]或 auto_now=…
parameter [Django-doc]分别存储创建或更新的时间戳。过去,这存在一些问题,但据我所知,这些问题已得到解决。
例如:
class MyModel(models.Model):
created = models.DateTimeField(<b>auto_now_add=True</b>)
updated = models.DateTimeField(<b>auto_now=True</b>)
或者你可以指定一个抽象基类,并在所有需要时间戳的模型中继承:
class TimestampedModel(models.Model):
created = models.DateTimeField(<b>auto_now_add=True</b>)
updated = models.DateTimeField(<b>auto_now=True</b>)
class Meta:
<b>abstract = True</b>
class MyModel(TimestampedModel):
# …
pass
对于 datetime
对象,您可以在 tzinfo
中包含时区。例如,您可以将时区设置为 UTC
:
from dateutil.tz import UTC
mynewdatetime = mydatetime.replace(<b>tzinfo=UTC</b>)
关于python - Django - 模型中的时间戳字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62359915/