我有以下数据库模型:
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 v1.1.1
最佳答案
看起来是在定义模型时评估 datetime.now()
,而不是每次添加记录时。
Django 有一个功能可以完成您已经尝试做的事情:
date = models.DateTimeField(auto_now_add=True, blank=True)
或
date = models.DateTimeField(default=datetime.now, blank=True)
第二个示例与您当前的示例之间的区别在于缺少括号。通过不带括号传递 datetime.now
,您传递的是实际函数,每次添加记录时都会调用该函数。如果你传递它datetime.now()
,那么你只是在评估函数并将返回值传递给它。
更多信息请访问 Django 的 model field reference
关于python - Django 日期时间问题(默认=datetime.now()),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2771676/