处理timedelta()和datetime.now

时间:2018-06-01 23:19:20

标签: python django django-models timedelta

我想为数据模型设置template<template... Dims, std::size_t... Indexes> auto linearise(std::integer_sequence<int, Dims...> dims, Indexes... indexes) { return (index * multiply_but_last(dims)) + ...; }

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被调用。

如何处理这样的问题?

1 个答案:

答案 0 :(得分:2)

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

我们无法使用timedelta(..)对象添加函数,因为函数也没有__add__方法,timedelta对象也没有__radd__方法来添加函数和timedelta一起,因此Python / Django无法用这种语法构造一个新函数。

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

def tomorrow():
    return datetime.now() + timedelta(days=1)

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

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