我正在使用django模型来创建表格。并且该表有一个inserted_time列,我使用普通的sql来插入数据,所以在插入sql中我不想关心这个列,因为我预计数据库应该自动填充now()到列(使用mysql)。但是如何在django模型中创建默认值为now()的列。我现在正在使用自动,但它不起作用。
更新
我创建了一个模型:
class TestDaniel(models.Model):
inserted_time = models.DateTimeField(db_index = True,auto_now_add=True)
然后我在迁移后检查了mysql数据库,表的定义是:
CREATE TABLE `orajob_testdaniel` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`inserted_time` datetime NOT NULL,
PRIMARY KEY (`id`),
KEY `orajob_testdaniel_e69592ad` (`inserted_time`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
从表定义中,inserted_time没有默认值,我想要的是对inserted_time列的默认值now(),那么我使用SQL(不是django模型)插入数据,它会自动将该列填充为now()
答案 0 :(得分:2)
嗯,在Django文档中明确声明了DateField
的默认值的使用。 Django DateField Documentation
根据文档,您可以执行以下操作:
inserted_time = models.DateTimeField(auto_now_add=True)
这会将当前datetime
设置为此字段。默认情况下,此值将在您创建对象后设置。警告:现在,即使您将自定义日期时间设置为此字段,也会被忽略!
如果使用纯SQL创建对象,则无效。 Django应该使用自己的ORM来设置默认值。