У Django DateTimeField есть проблемы с datetime.now - PullRequest
1 голос
/ 20 октября 2011

В Django существует общий шаблон для использования следующего определения в модели:

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

Это, к сожалению, проблематично, поскольку оно устанавливает значение some_date на что-то вроде: u'2011-10-18 08:14:30.242000'.

Если вы теперь используете набор форм, чтобы позволить пользователю отправлять / редактировать дополнительные экземпляры, форма всегда будет оцениваться как измененная.

Причина в том, что начальное значение даты и времени будет u'2011-10-18 08:14:30.242000', а текущее значение из виджета формы будет u'2011-10-18 08:14:30'. Который всегда отличается.

К сожалению, я не могу написать что-то вроде "default=currenttime", auto_add и auto_now_add ведут себя по-разному и всегда задают для поля значение editable=False.

1 Ответ

0 голосов
/ 20 октября 2011

Вы можете использовать метод сохранения модели как таковой или повторить это поведение в формах. Форма

class Something(models.Model):
    pub_date = models.DateTimeField(editable=False)
    change_date = models.DateTimeField(editable=False)

    def save(self, *args, **kwargs):
        if not self.id:
            self.pub_date = datetime.datetime.today()
        self.change_date = datetime.datetime.today()
        super(Something, self).save(*args, **kwargs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...