当前位置: 首页 > 面试题库 >

Django datetime问题(默认值=datetime.now())

长孙诚
2023-03-14
问题内容

我有以下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的模型字段参考



 类似资料:
  • 注:内容翻译自官网文档 Language Guide (proto3) 中的 Default Values 一节 当消息被解析时, 如果被编码的消息没有包含特定的简单元素, 被解析的对象对应的字段被设置为默认值. 默认值是和类型有关的: 对于strings, 默认值是空字符串(注, 是"", 而不是null) 对于bytes, 默认值是空字节(注, 应该是byte[0], 注意这里也不是null)

  • 主要内容:在创建表时设置默认值约束,在修改表时添加默认值约束,删除默认值约束默认值(Default)的完整称呼是“默认值约束(Default Constraint)”,用来指定某列的默认值。在表中插入一条新记录时,如果没有为某个字段赋值,系统就会自动为这个字段插入默认值。 例如,员工信息表中,部门位置在北京的较多,那么部门位置就可以默认为“北京”,系统就会自动为这个字段赋值为“北京”。 默认值约束通常用在已经设置了非空约束的列,这样能够防止数据表在录入数据时出现错误。 在

  • 我正在开发一个JPA应用程序,并且我正在使用eclipse链接提供程序。 我有一个表T1,其中有一个字段F1定义为非null,并且有一个默认值(“U”)。 我已经定义了一个映射到表T1的实体。该实体有一个映射到字段F1的属性,我已经用注释@ReturnInsert(returnOnly=true)配置了该属性。 文件说明: 使用@返回插入使INSERT操作将值返回到正在写入的对象中 如果在映射到F

  • hibernate有没有一种方法可以为每个字段定义默认值,并且为了数据库大小的缘故,可以写null而不是这些默认值? 对于inst,假设字符串的默认值为“”。我想Hibernate到: 为数据库中具有NULL的每个字段返回". 写NULL到数据库,当我尝试写" 当然,我可以写成千上万个Getters和Setters,但是它能自动完成吗?

  • Parameter Position Type Required Default Description 1 string No empty This is the default value to output if the variable is empty. 这是变量为空的时候的默认输出。 This is used to set a default value for a variable.

  • 注意 当前章节中涉及的配置一般适用于关系数据库。这里展示的扩展方法在你安装了关系数据库提供程序之后就能获得(由Microsoft.EntityFrmeworkCore.Relational 程序包共享)。 数据列的默认值是插入一个数据行但未指定该列的值时所插入的值。 惯例 按照惯例不会配置默认值。 数据注解 不能使用数据注解来设置默认值。 流式 API 可以使用流式 API 来为属性设置默认值。