Опции по умолчанию Django DateField

У меня есть модель, которая имеет поле времени даты:

date = models.DateField(_("Date"), default=datetime.now())

Когда я проверяю приложение в созданный в django администраторе, DateField также добавили время к нему, так, чтобы, при попытке сохранить его, оно возвратило ошибку. Как я делаю значение по умолчанию просто датой? (datetime.today () не работает ни один),

71
задан Srikar Appalaraju 22 November 2012 в 14:31
поделиться

2 ответа

Поэтому необходимо всегда импортировать базовый модуль дата-время : импортировать дату , а не класс дата-время внутри этого модуля: из дата-время импорта .

Другая допущенная ошибка заключается в фактическом вызове функции по умолчанию с помощью (). Это означает, что все модели получат дату в момент, когда класс впервые определен - таким образом, если ваш сервер не перезапускается в течение дней или недель без перезапуска Apache, все элементы получат ту же самую начальную дату.

Так что поле должно быть:

import datetime
date = models.DateField(_("Date"), default=datetime.date.today)
134
ответ дан 24 November 2019 в 12:53
поделиться

Вы ошиблись используют модуль 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 всегда Используйте текущую дату и не являются значением по умолчанию, которое вы можете переопределить.

31
ответ дан 24 November 2019 в 12:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: