django:如何创建一个默认值为now()的列?

时间:2016-12-15 03:18:59

标签: django django-models

我正在使用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()

1 个答案:

答案 0 :(得分:2)

嗯,在Django文档中明确声明了DateField的默认值的使用。 Django DateField Documentation

根据文档,您可以执行以下操作:

inserted_time = models.DateTimeField(auto_now_add=True)

这会将当前datetime设置为此字段。默认情况下,此值将在您创建对象后设置。警告:现在,即使您将自定义日期时间设置为此字段,也会被忽略!

如果使用纯SQL创建对象,则无效。 Django应该使用自己的ORM来设置默认值。