我有一个看起来像这样的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))
那我该怎么做呢?
答案 0 :(得分:3)
使用函数生成默认值:
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
函数时,都会执行表达式,并在将来的某一天生成一个新的日期时间对象。
对于1.7之前的Django版本,您也可以使用lambda
,但迁移序列化的更改现在需要一个全局对象。