Django:在模型与视图上执行 datetime.now() 时相差 4-6 秒
Django: diffence of 4-6 seconds when executing datetime.now() at the models vs views
当我这样做时:
from datetime import datetime, timedelta
def startExam(request):
examCycle = ExamRecords()
examCycle.starttime = datetime.datetime.now()
examCycle.save()
保存的开始时间符合预期,但是当我在模型上这样做时:
from datetime import datetime, timedelta
class ExamRecords(models.Model):
starttime = models.DateTimeField(default=datetime.now())
时间延迟4-6秒
现在也尝试使用 mysql,但差异仍然更大:
class ExamRecords(models.Model):
starttime = models.DateTimeField(auto_now_add=True)
...所以我只想使用相同的 python 代码了解这几秒的原因 :)
您不小心将服务器 [重新] 启动的时间设置为 starttime
字段的默认值。去掉字段定义中datetime.now
后面的圆括号:
starttime = models.DateTimeField(default=datetime.now)
如果要计算字段的默认值,请创建一个函数并将此函数设置为 default
参数:
def default_endtime():
return datetime.datetime.now() + \
datetime.timedelta(minutes=settings.TEST_LENGHT_MINUTES)
class MyModel(models.Model):
starttime = models.DateTimeField(default=datetime.now)
endtime = models.DateTimeField(default=default_endtime)
当我这样做时:
from datetime import datetime, timedelta
def startExam(request):
examCycle = ExamRecords()
examCycle.starttime = datetime.datetime.now()
examCycle.save()
保存的开始时间符合预期,但是当我在模型上这样做时:
from datetime import datetime, timedelta
class ExamRecords(models.Model):
starttime = models.DateTimeField(default=datetime.now())
时间延迟4-6秒
现在也尝试使用 mysql,但差异仍然更大:
class ExamRecords(models.Model):
starttime = models.DateTimeField(auto_now_add=True)
...所以我只想使用相同的 python 代码了解这几秒的原因 :)
您不小心将服务器 [重新] 启动的时间设置为 starttime
字段的默认值。去掉字段定义中datetime.now
后面的圆括号:
starttime = models.DateTimeField(default=datetime.now)
如果要计算字段的默认值,请创建一个函数并将此函数设置为 default
参数:
def default_endtime():
return datetime.datetime.now() + \
datetime.timedelta(minutes=settings.TEST_LENGHT_MINUTES)
class MyModel(models.Model):
starttime = models.DateTimeField(default=datetime.now)
endtime = models.DateTimeField(default=default_endtime)