python - 处理timedelta()和datetime.now

标签 python django django-models timedelta

我想为数据模型设置timedelta

class ActivateCode(models.Model):
    """ """
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    code = models.CharField(max_length=100)
    date_expired = models.DateTimeField(default=datetime.now + timedelta(days=1))

这似乎不是一个正确的解决方案,因为未调用 datetime.now 而是调用了 timedetla(days=1)

遇到这样的问题该如何处理?

最佳答案

简而言之:我们可以创建一个函数来计算第二天。

我们无法添加带有 timedelta(..) 的函数对象,因为该函数也没有 __add__方法,也不是 timedelta对象有一个 __radd__添加功能的方法和 timedelta s 在一起,因此 Python/Django 无法使用此语法构造新函数。

但是,我们可以通过创建一个计算默认时间的函数来解决这个问题:

<b>def tomorrow():
    return datetime.now() + timedelta(days=1)</b>

class ActivateCode(models.Model):
    """ """
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    code = models.CharField(max_length=100)
    date_expired = models.DateTimeField(default=<b>tomorrow</b>)

我们这里调用我们设置为default=...的函数,我们只传递对我们的 tomorrow 的引用函数,这样如果 Django 创建一个新对象,它将调用 tomorrow(..)函数,从而精确计算第二天。

关于python - 处理timedelta()和datetime.now,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50652057/

相关文章:

python - 为什么导入 Mechanize 会破坏我的 aws ec2 Elastic Beanstalk flask "hello world"python 应用程序?

python - AttributeError 'tuple' 对象没有属性 'values' django rest framework

python - Django 无效 block 标记 : 'endfor'

python - 将文件保存为没有表单的 FileField

python - 我可以将选定的 python 函数和类方法从一个文件复制到另一个文件吗?

python - 如何在 shell 中获取 PYTHONPATH?

python - django南部多次迁移

python - 我如何添加与其他模型相关的选择字段并传递 id 当前对象?

查询MySQL时Python报错-- 'int'不支持buffer接口(interface)

Django CBV - 如何检查用户的自定义属性以允许访问 View