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)