models.朋友
class TestModel(models.Model):
event = models.DateTimeField(default=next 3-days)
如何在接下来的3天内获得默认?可能吗?
您应该使用一个返回所需日期时间的callable,例如:
from datetime import timedelta
from django.utils import timezone
def in_three_days():
return timezone.now() + timedelta(days=3)
class TestModel(models.Model):
event = models.DateTimeField(default=in_three_days)
如果你在Vaibhav的答案中使用x = datetime.datetime.now() + datetime.timedelta(days = 3)
,那么x
将在加载模块时计算,而不是在创建每个新的TestModel
实例时计算。
这是一种方法。
import datetime
class TestModel(models.Model):
x = datetime.datetime.now() + datetime.timedelta(days = 3)
event = models.DateTimeField(default = x)
正如一些答案指出你必须使用callable,但你也应该包括时区感知日期时间对象来正确设置接下来的3天,这将按预期工作,不会给你时区不知道日期时间对象,这依赖于服务器时间
from django.utils import timezone as tz
def next_day_dt(n=3):
return tz.localtime(tz.now()) + tz.timedelta(days=n)
class TestModel(models.Model):
event = models.DateTimeField(default=next_day_dt)
...
希望能帮助到你