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())