You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django DateField中动态设置默认日期(今日+7天)

Django DateField 默认值设置为「今日+7天」的正确方式

你当前写法的问题在于:模型类定义时就直接计算出了具体的日期值,每次执行makemigrations/migrate命令时,Python会重新执行这个计算生成新的日期,Django会判定该字段默认值发生变更,因此每次都会生成新的迁移文件。

正确的做法是传递一个可调用对象(函数或lambda)给default参数,Django会在创建新对象时才调用这个对象生成默认值,而非在模型加载阶段就计算固定值。

方法一:使用lambda表达式

from datetime import date, timedelta
from django.db import models

class YourModel(models.Model):
    date_validity = models.DateField(default=lambda: date.today() + timedelta(days=7))

方法二:定义独立函数(推荐逻辑复杂时使用)

from datetime import date, timedelta
from django.db import models

def get_default_validity_date():
    return date.today() + timedelta(days=7)

class YourModel(models.Model):
    date_validity = models.DateField(default=get_default_validity_date)

注意:函数名后不要加括号,我们需要传递的是函数对象本身,而非函数执行后的结果。

这样设置后,只有创建新的模型实例时才会计算「今日+7天」的日期,makemigrations不会再无意义地生成新的迁移文件。

内容的提问来源于stack exchange,提问作者atropa belladona

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 04:45:32