try 在Django模型中为密钥过期设置时间戳时遇到此问题:

我当前的代码:

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

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

我在使用"timezone.timeDelta(day=1)"更改日期时遇到问题.

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

我收到的错误是:

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

TypeError:+:‘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相关问答推荐

Django-将html数据保存到quillfield中

Django ORM Groupby

AttributeError:';ManyToOneRel&39;对象没有属性';attname';

我无法在Django模板中使用Get_Foo_Display

Django Rest Framework 速率限制动态基于用户类型

Django:使用相同的外键在不同的应用程序中 Select 多个列

AttributeError:模块rest_framework.serializers在 Swagger 中的 Django 中没有属性NullBooleanField

Django 和 HTML 无法从指定时间开始视频

使用 Vagrant 进行端口转发时连接重置

Django 视图 - 首先从调用应用程序的目录加载模板

Django REST Framework - 将额外参数传递给操作

Django中的左外反向select_related?

Django:get_or_create 使用 together_unique 引发重复条目

PyMongo vs MongoEngine for Django

如何在 twitter-bootstrap 模式窗口中插入 django 表单?

Django 模板和变量属性

Django ORM 能否以可靠的与后端无关的方式存储无符号 64 位整数(又名 ulong64 或 uint64)?

Django中的自定义排序

Django:以 10 为底的 int() 的无效文字

如何使用 Django/nginx 部署仅限 HTTPS 的站点?