如何将 Django 模型日期字段默认值设置为未来日期?

Ind*_*sha 5 django django-models

我正在尝试将日期字段的默认值设置为相对于今天的未来日期。但是,当我将其设置如下时,它给了我以下警告。

return_date = models.DateField(default=(timezone.now() + timedelta(days=1)))

booking.Booking.return_date: (fields.W161) Fixed default value provided.
HINT: It seems you set a fixed date / time / datetime value as default for 
this field. This may not be what you want. If you want to have the 
current date as default, use `django.utils.timezone.now`
Run Code Online (Sandbox Code Playgroud)

与以下代码相同的警告。

return_date = models.DateField(default=(date.today() + timedelta(days=1)))
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

谢谢。

Ehs*_*uri 8

你给它一个固定的时间(因为你正在调用 timezone.now() 所以它的返回值将是默认值)你应该将函数传递给默认值而不调用它,像这样

def return_date_time():
    now = timezone.now()
    return now + timedelta(days=1)
Run Code Online (Sandbox Code Playgroud)

在你的领域:

return_date = models.DateField(default=return_date_time) 
### dont call it, so it will be evaluated by djanog when creating an instance
Run Code Online (Sandbox Code Playgroud)