Некорректная дата django

Рейтинг: 0Ответов: 1Опубликовано: 07.06.2023

У меня есть модели, в которые я проставляю дату с помощью timezone.now(), но дата ставится с момента запуска контейнера docker, а не текущая.

class Progress(models.Model):
    mail_sent = 'M'
    done = 'D'
    STAT = [
        (mail_sent, 'Уведомлен'),
        (done, 'Прошел'),
    ]
    emp_name = models.ForeignKey(Emp, on_delete=models.CASCADE, verbose_name='Сотрудник')
    doc_title = models.ForeignKey(Docs, on_delete=models.CASCADE, verbose_name='Документ')
    date_update = models.DateField(verbose_name='Дата прохождения', blank=True, null=True)
    date_create = models.DateField(default=timezone.now(), verbose_name='Дата начала прохождения', help_text='Дата, которая указывает, когда документ был добавлен для прохождения сотруднику')
    dead_line_date = models.DateField(verbose_name='Дедлайн', blank=True, null=True)
    version = models.PositiveIntegerField('Версия документа для текущего прогресса')
    approve_sertificate = models.FileField(verbose_name='Сертификат', blank=True, null=True, upload_to='certificates/', help_text='Файл с сертификатом')
    active_status = models.BooleanField(default=True, verbose_name='Активный статус документа', help_text='Если да, то документ активный и его прогресс считается, если нет, то этот прогресс не считается')
    add_status = models.BooleanField(default=False, verbose_name='Дополнительный статус', help_text='Если да, то документ является дополнительным для данного сотрудника, нет, то ')
    status = models.CharField(max_length=1, choices=STAT, default='M')

Ответы

▲ 1Принят

Во-первых, у вас DateField, а не DateTimeField, поэтому нужен date.today (как в datetime.date.today, но джанго вежливо принимает и ваш вариант =) )

Во-вторых, вы вызываете функцию, а нужно ее просто передать без вызова, как написано в доках:

For DateField: default=date.today

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

date_create = models.DateField(default=date.today, ...)

В дополнение, если вы не собираетесь изменять значение этого поля, можно просто использовать auto_now_add:

date_create = models.DateField(auto_now_add=True, ...)