我有一个看起来像这样的Django对象:
from datetime import timedelta
class MyObject:
startTime = models.DateTimeField(default=datetime.datetime.utcnow)
现在,我想向此模型添加一个名为expiredTime的字段,该字段将自动设置为startTime之后的1天。显然这是行不通的:
expiredTS = models.DateTimeField(default=datetime.datetime.utcnow + timedelta(days=1))
那我该怎么办呢?
使用函数产生默认值:
from datetime import datetime, timedelta
def utc_tomorrow():
return datetime.utcnow() + timedelta(days=1)
class MyObject:
startTime = models.DateTimeField(default=datetime.utcnow)
expiredTS = models.DateTimeField(default=utc_tomorrow)
每次需要默认值时,都会default
调用callable。每次utc_tomorrow
调用该函数时,都会执行表达式,并在将来的一天生成一个新的datetime对象。
对于1.7之前的Django版本,您也可以lambda
为此使用,但是现在更改迁移序列化需要一个全局对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句