Как динамически установить дату по умолчанию в поле DateField

Я пытаюсь добавить поле today + 7 days в качестве значения по умолчанию в Django DateField.

Вот как я делаю.

date_validity = models.DateField(default=datetime.date.today() + timedelta(days=7))

Но это дает мне проблему. Одна вещь - поле изменяется каждый раз, когда мы выполняем команду makemigrations/migrate, но мы не делаем никаких изменений. Как я могу настроить это точно?

Добавьте следующее в модель, чтобы установить дату, когда она не задана/не установлена.

def save(self, *args, **kwargs)
    if not self.date_validity:
        self.date_validity = datetime.date.today() + timedelta(days=7)
    super().save(*args,**kwargs) # Or super(MyModel, self).save(*args,**kwargs) # for older python versions.

Получить дату для поля.

def get_default_date():
    return datetime.date.now() + timedelta(days = 7)

А затем в поле:

date_validity = models.DateField(default=get_default_date)

Возможный дубликат:

https://stackoverflow.com/a/2771701/18020941

Вернуться на верх