尝试在 Django 模型中为 key 过期设置时间戳并遇到此问题:
我当前的代码:
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))
我得到的错误是:
key_expires = models.DateTimeField(default=timezone.now + timezone.timedelta(days=1))
类型错误:+ 不支持的操作数类型:'function' 和 'datetime.timedelta'
目标是提前 24 小时设置时间戳。
非常感谢任何帮助。
最佳答案
default
接受一个可调用函数,因此您只需要编写一个函数来执行您想要的操作,然后将其作为参数提供:
def one_day_hence():
return timezone.now() + timezone.timedelta(days=1)
class MyModel(models.Model):
...
key_expires = models.DateTimeField(default=one_day_hence)
(如 here 所讨论,抵制将其设为 lambda
的诱惑。)
关于Django 默认值=timezone.now + delta,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27491248/