python - Django - 模型中的时间戳字段

标签 python django django-models timestamp

在此处找到同一问题的答案 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/

相关文章:

python - (Django) DetailView 模板不显示信息

python - Materialise CSS 不显示(与 Flask 有关)

Django:一次保存多个对象信号

python - Django REST 仅列表(无详细信息)ViewSet

mysql - Django Mysql 连接池

python - INSPECTDB 和 INSPECTDB_REFACTOR 生成空模型

python - 复制 python 列表

python - Flask - 设置根目录

python - 虚拟数据包字段 : how to handle a polymorphic protocole?

python - 作为可调用的默认值仅在 django 迁移期间调用一次