Django default=timezone.now+;三角洲

Django default=timezone.now+;三角洲,django,django-models,timezone,timezone-offset,Django,Django Models,Timezone,Timezone Offset,试图在Django模型中为密钥过期设置时间戳,但遇到以下问题: 我当前的代码: key_expires = models.DateTimeField(default=timezone.now() + timezone.timedelta(days=1)) 上面的代码可以工作,但是当使用“timezone.now()”时,它会从Apache重新启动时获取时间戳,因此这不起作用。我做了一些研究,找到了问题的解决方案,所以通过将“timezone.now()”替换为“timezone.now”,每

试图在Django模型中为密钥过期设置时间戳,但遇到以下问题:

我当前的代码:

key_expires = models.DateTimeField(default=timezone.now() + timezone.timedelta(days=1))

上面的代码可以工作,但是当使用“timezone.now()”时,它会从Apache重新启动时获取时间戳,因此这不起作用。我做了一些研究,找到了问题的解决方案,所以通过将“timezone.now()”替换为“timezone.now”,每次创建对象时我都会得到当前的时间戳,这很完美,问题得到了部分解决

使用“timezone.timedelta(days=1)”更改日期时遇到问题

我得到的错误是:

key_expires = models.DateTimeField(default=timezone.now + timezone.timedelta(days=1))
TypeError:+:“函数”和“datetime.timedelta”的操作数类型不受支持

目标是提前24小时设置时间戳


非常感谢您的帮助

默认值
采用可调用函数,因此您只需编写一个函数来执行所需操作,然后将其作为参数提供:

def one_day_hence():
    return timezone.now() + timezone.timedelta(days=1)

class MyModel(models.Model):
    ...
    key_expires = models.DateTimeField(default=one_day_hence)
(如前所述,抵制诱惑,使其成为
lambda

def one_day_hence():
    return timezone.now() + timezone.timedelta(days=1)

class MyModel(models.Model):
    ...
    key_expires = models.DateTimeField(default=one_day_hence)