Django 默认值=timezone.now + delta

标签 django django-models timezone timezone-offset

尝试在 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/

相关文章:

django - ImportError : Failed to import test module:

python - Django - 模型 - 递归检索叶节点的父节点

django - 根据其他字段在 Django 中的用户模型中自动创建用户名

django - 将一些新属性/字段附加到 django rest 框架中的validated_data

javascript - 主 url 之前的 SilentPrint 是什么?

python - Django(grappelli): how add my own css to all the pages or how to extend admin's base. html?

python - Slugify 未将标题保存为 slug Django 2 : NoReverseMatch error

javascript - 使用我的时区在我的网站上显示推文

java - Apache Cassandra 的 Spring Data 将 java.time.LocalDateTime 转换为 UTC

java - input.equals ("string here")不工作