Saq*_*Ali 0 python django django-models
我有一个看起来像这样的 Django 对象:
from datetime import timedelta
class MyObject:
startTime = models.DateTimeField(default=datetime.datetime.utcnow)
Run Code Online (Sandbox Code Playgroud)
现在我想向这个模型添加一个名为 expiredTime 的字段,它会在 startTime 之后自动设置为 1 天。显然这行不通:
expiredTS = models.DateTimeField(default=datetime.datetime.utcnow + timedelta(days=1))
Run Code Online (Sandbox Code Playgroud)
那么我该怎么做呢?
使用函数生成默认值:
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)
Run Code Online (Sandbox Code Playgroud)
每次需要默认值时,都会default调用可调用对象;每次utc_tomorrow调用该函数时,都会执行该表达式,并在未来的某一天生成一个新的 datetime 对象。
对于 1.7 之前的 Django 版本,您也可以lambda为此使用 a ,但迁移序列化的更改现在需要一个全局对象。
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |