Django DateTimeField auto_now_add не работает - PullRequest
11 голосов
/ 05 мая 2011

В одной из моделей я установил одно поле временной метки следующим образом:

created_datetime = models.DateTimeField(auto_now_add = True)

В оболочке я могу создать объект и сохранить его, однако в моем приложении это вызывает исключение, котороеПоле create_datetime не может быть пустым.

Запутано, когда что-то пошло не так !!Как восстановить это.

Ответы [ 4 ]

12 голосов
/ 05 мая 2011

Насколько я знаю, лучшая практика для значений времени по умолчанию заключается в использовании следующего:

created_datetime = models.DateTimeField(default=datetime.datetime.now)

Не забудьте импортировать дату и время

2 голосов
/ 31 мая 2014

Вы можете сделать что-то вроде этого

created_datetime = models.DateTimeField(auto_now_add=True, auto_now=False)
1 голос
/ 22 июня 2018

У меня было это, и это действительно смущало меня целую вечность.

Оказалось, что моя модель имела собственный первичный ключ, и это было связано с ошибкой, не устанавливающей его при создании некоторых тестовых объектов.

В первый раз это работало нормально как auto_now_add set created_at. Во второй раз его не было, поскольку объект с нулевым первичным ключом уже существовал, поэтому он делал обновление. И он попытался установить это значение на created_at null, что было запрещено в моей модели.

Так что стоит проверить, не попали ли вы в этот вопрос с ошибкой «в моем приложении возникает исключение, что поле selected_datetime не может быть пустым», что может быть вызвано неправильной установкой первичного ключа.

Решение было для меня, чтобы правильно установить первичный ключ.

0 голосов
/ 17 августа 2013

Следующий путь находится в "part1" документации django

from django.utils import timezone
p = Poll(question="What's new?", pub_date=timezone.now())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...