У меня есть модель, которая имеет поле времени даты:
date = models.DateField(_("Date"), default=datetime.now())
Когда я проверяю приложение в созданный в django администраторе, DateField также добавили время к нему, так, чтобы, при попытке сохранить его, оно возвратило ошибку. Как я делаю значение по умолчанию просто датой? (datetime.today () не работает ни один),
Поэтому необходимо всегда импортировать базовый модуль дата-время
: импортировать дату
, а не класс дата-время
внутри этого модуля: из дата-время импорта
.
Другая допущенная ошибка заключается в фактическом вызове функции по умолчанию с помощью ()
. Это означает, что все модели получат дату в момент, когда класс впервые определен - таким образом, если ваш сервер не перезапускается в течение дней или недель без перезапуска Apache, все элементы получат ту же самую начальную дату.
Так что поле должно быть:
import datetime
date = models.DateField(_("Date"), default=datetime.date.today)
Вы ошиблись используют модуль DateTime вместо модуля даты. Вы имели в виду это сделать:
from datetime import date
date = models.DateField(_("Date"), default=date.today)
Если вы хотите только захватить текущую дату, правильный способ обрабатывать это, это использовать параметр AUTO_NOW_ADD:
date = models.DateField(_("Date"), auto_now_add=True)
Однако Docs Modelfield четко утверждают, что AUTO_NOW_ADD и auto_now всегда Используйте текущую дату и не являются значением по умолчанию, которое вы можете переопределить.