📜  django 模型当前时间戳 - Python (1)

📅  最后修改于: 2023-12-03 15:00:27.259000             🧑  作者: Mango

Django 模型当前时间戳 - Python

在 Django 中,我们经常需要记录模型的创建时间和修改时间。为了实现这一需求,我们可以使用 auto_now_addauto_now 参数来自动生成时间戳。

auto_now_add

auto_now_add 用于记录模型实例的创建时间,它会在模型实例第一次被保存到数据库中时,自动将当前时间戳写入到指定的字段中。

以下是一个例子:

from django.db import models

class MyModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)

当我们创建一个 MyModel 实例时,它会自动记录当前时间戳并将其写入到 created_at 字段中。这个时间戳会一直保持不变,直到我们手动修改 created_at 字段。

auto_now

auto_now 用于记录模型实例的修改时间,它会在模型实例每次被保存到数据库中时,自动将当前时间戳写入到指定的字段中。

以下是一个例子:

from django.db import models

class MyModel(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

当我们修改一个 MyModel 实例时,它会自动记录当前时间戳并将其写入到 updated_at 字段中。每次保存实例时都会更新这个时间戳。

注意事项
  • auto_now_addauto_now 只能用于 DateFieldDateTimeFieldTimeFieldTimestampField 类型的字段中。
  • auto_now_addauto_nowserializer 中可能不会正常工作,需要手动设置时间戳。
  • 手动设置时间戳时,最好使用 UTC 时区。可以使用 django.utils.timezone 模块来获取当前时区的时间戳。例如:timezone.now()

总的来说,auto_now_addauto_now 很方便,可以省去手动记录时间戳的麻烦。但是在某些情况下,我们可能需要手动设置时间戳或使用其他方式来记录时间。在这种情况下,我们可以使用 Django 的信号来自定义实现。