在 Django 中创建自动日期时间

Creating automatic datetime in django

我想创建一个具有预定义日期时间的字段。像这样:

class MyExample(models.Model):
    expiration = timezone.now() + timedelta(days=1)
    expiration_date = models.DateTimeField(verbose_name="Expirate in", default=expiration)
    ...

我不知道这是否是最好的方法,因为当有新的迁移时,table 会更新为 expiration

有人有什么建议吗?

您在此处将过期日期设置为 启动 服务器一天后的时间戳。但是,如果您因此 运行 服务器一周,则所有 expiration_date 都将在您创建 MyExample.[=13 时的时间戳 之前 过期=]

您应该定义一个 returns 到期日期的函数,并将 reference 作为默认值传递给该函数:

from datetime import timedelta
from django.utils.timezone import now

def <b>expiration</b>():
    return now() + timedelta(days=1)

class MyExample(models.Model):
    expiration_date = models.DateTimeField(
        <b>default=expiration</b>,
        verbose_name='Expirate in'
    )