Django datetime问题(默认值=datetime.now())
我有以下db型号:
from datetime import datetime class TermPayment(models.Model):
# I have excluded fields that are irrelevant to the question
date = models.DateTimeField(default=datetime.now(), blank=True)
我使用以下命令添加新实例:
tp = TermPayment.objects.create(**kwargs)
我的问题:数据库中的所有记录在日期字段中都有相同的值,即第一次付款的日期。服务器重新启动后,一条记录具有新的日期,而另一条记录与第一条记录具有相同的日期。看起来有些数据被缓存了,但我找不到位置。
数据库:mysql 5.1.25
django 1.1.1版
回答:
在定义模型时,似乎正在计算datetime.now()
,而不是每次添加记录时。
Django有一个功能可以完成你已经在尝试的工作:
date = models.DateTimeField(auto_now_add=True, blank=True)
or
date = models.DateTimeField(default=datetime.now, blank=True)
第二个例子和你现在的例子的区别在于缺少括号。通过传递datetime.now
(不带括号),你将传递实际函数,每次添加记录时都将调用该函数。如果你传递给它datetime.now()
,那么你只是在计算函数并传递返回值。
更多信息请参见Django的模型字段参考
以上是 Django datetime问题(默认值=datetime.now()) 的全部内容, 来源链接: utcz.com/qa/434477.html