将今天的日期设为模型的默认值

2 投票
4 回答
5604 浏览
提问于 2025-04-16 11:58

我该怎么做才能把模型中的默认值设置为今天的日期呢?

我的模型是这样的:

vote_date = models.DateField(_('投票日期'), null=False, blank=False)

4 个回答

1

使用 auto_now_add,因为 auto_now 会在每次修改对象时都改变投票日期。

http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.DateField.auto_now_add

3

这些回答都没有解决最初的问题。重新说一下问题,我想把日期字段的默认值设置为今天的日期,并且还希望用户可以修改这个默认值。

根据Django的文档:

DateField.auto_now
每次保存对象时,自动将字段设置为当前时间。这对于“最后修改时间”的记录很有用。请注意,这里使用的始终是当前日期;这不是一个可以被覆盖的默认值。

DateField.auto_now_add
在对象首次创建时,自动将字段设置为当前时间。这对于记录创建时间很有用。请注意,这里使用的始终是当前日期;这也不是一个可以被覆盖的默认值。

如果这个字段不仅仅是“什么时候添加/编辑”的记录,解决办法是使用

default=datetime.date.today

注意没有括号。这是将默认值设置为函数,而不是模型评估时函数返回的值。

0

这解决了我的问题:

vote_date = models.DateField(_('vote date'), null=False, blank=False, auto_now=True)

关于Django字段的更多信息...

撰写回答