python - Django 日期时间问题(默认=datetime.now())

标签 python django

我有以下数据库模型:

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/

相关文章:

django - 新版本的 sorl-thumbnail ,如何在 django admin 中显示拇指?

python - Python/Django 中的个性化/随机 URL

css - Django:在模板页面上隐藏必要的表格

python - Django Rest - 将字段转换为列表?

python - ImportError异常值: No module named forms

python - 你能覆盖一个由函数结果定义的变量而不先在 python 中清除吗?

python - 使用 Python 的 CFFI 并排除系统头文件

python - 如何确定 Python 对象是数字?

python - 如何在Python中调用子类对象的未绑定(bind)方法

python - 未找到 Artifactory 404 Artifactory