我想为数据模型设置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
被调用。
如何处理这样的问题?
答案 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(..)
函数,从而准确计算第二天。