Django DateTimeField auto теперь добавить не работает

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

created_datetime = models.DateTimeField(auto_now_add = True)

в то время как в shell я могу создать obj и сохранить его, однако в моем приложении он вызывает исключение, которое created_datetime поле не может быть null.

перепутал, где все пошло не так!! Как reslove его.

4 ответов


вы можете сделать что-то подобное

created_datetime = models.DateTimeField(auto_now_add=True, auto_now=False)

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

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

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


у меня было это, и это действительно смутило меня на века.

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

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

поэтому стоит проверить, если вы заканчиваете этот вопрос с ошибкой "в моем приложении он вызывает исключение, которое created_datetime поле не может быть null", что может быть вызвано неправильной установкой первичного ключа.

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


следующий способ находится в "части 1" документации django

from django.utils import timezone
p = Poll(question="What's new?", pub_date=timezone.now())