2016-12-15 2 views
1

Я использую модель django для создания таблицы. И таблица имеет столбец insert_time, и я использую простой sql для вставки данных, поэтому в sql insert я не хочу заботиться об этом столбце, так как я ожидал, что база данных должна автоматически заполнить now() в столбце (используя mysql). Но как создать такой столбец, значение по умолчанию которого теперь() в модели django. Я использую auto-now, но он не работает.django: как создать столбец, значение по умолчанию которого теперь()?

обновление:

Я создал модель, как:

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; 

Из определения таблицы , insert_time не имеет значения по умолчанию, то, что я хочу, должно иметь значение по умолчанию now() для столбца insert_time, поэтому то, что я вставил данные с использованием SQL (не модели django), будет автоматически o заполнить эту колонку как сейчас()

+0

Любой ... Код? Может быть? –

ответ

2

Ну, использование значений по умолчанию для DateField четко указано в документации Django. Django DateField Documentation

Согласно документации, вы можете сделать следующее:

inserted_time = models.DateTimeField(auto_now_add=True) 

Это позволит установить текущее datetime в этой области. Это значение будет по умолчанию и будет установлено после создания объекта. Предупреждение: теперь, даже если вы установите для него значение datetime, оно будет проигнорировано!

Это не сработает, если вы создадите свой объект с использованием простого SQL. Django должен использовать свою собственную ORM для установки значений по умолчанию.

Смежные вопросы