Datetime.now () ненормальность - Python

Я вручаю приложение Python через Django. В рамках приложения я храню "созданное" поле классика в нескольких таблицах.

Это - то, как поле похоже в форме Django:

created = models.DateTimeField(blank=True, default=datetime.now())

К сожалению, datetime.now () не точно. На самом деле в базе данных у меня есть наборы строк с той же самой меткой времени.

datetime.now () значение, кажется, изменяется каждые 30-45 минут.


Мое приложение Django вручено на Windows Server 2005 позади IIS6.

Справка была бы удивительна!

5
задан RadiantHex 23 June 2010 в 09:59
поделиться

3 ответа

, потому что datetime.now () вызывается при инициализации вашего модуля, и это значение используется по умолчанию.

Вы хотите использовать параметр auto_now_add = True

created = models.DateTimeField(auto_now_add=True)

изменить: нет необходимости в «пустом», если вы устанавливаете опцию auto.

6
ответ дан 18 December 2019 в 09:05
поделиться

К сожалению, это распространенная ошибка новичков. Вы вызвали метод datetime.now () в определении - это означает, что по умолчанию будет время выполнения определения, то есть когда запускается процесс вашего сервера.

Вам нужно передать вызываемый вместо:

created = models.DateTimeField(blank=True, default=datetime.now)

, то есть без вызывающих скобок.

(Или просто используйте auto_now_add = True ).

10
ответ дан 18 December 2019 в 09:05
поделиться

У вас нет полей auto_now или auto_now_add, для которых установлено значение True. Следовательно, значение по умолчанию - это то, что заполняется в форме. Когда форма отправляется в браузер. Конечно будут дубликаты.

http://docs.djangoproject.com/en/1.2/ref/models/fields/#datetimefield

2
ответ дан 18 December 2019 в 09:05
поделиться
Другие вопросы по тегам:

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