【发布时间】:2011-06-28 18:28:47
【问题描述】:
如何在模型中将默认值设置为今天的日期?
我的模型: vote_date = models.DateField(_('投票日期'), null=False, blank=False)
【问题讨论】:
-
我会给你一个 +1,因为这是一个很好的想法,但是你对自己问题的超快速回答表明你在真正寻找解决方案之前就问过......
标签: python django date default
如何在模型中将默认值设置为今天的日期?
我的模型: vote_date = models.DateField(_('投票日期'), null=False, blank=False)
【问题讨论】:
标签: python django date default
没有一个答案能解决最初的问题。重申问题,如何将日期字段的默认值设置为今天的日期,仍然让用户覆盖默认值。
来自 DJango 文档:
DateField.auto_now
每次对象时自动将字段设置为现在 被保存。对“最后修改”有用 时间戳。注意当前日期 总是被使用;这不仅仅是一个 您可以覆盖的默认值。DateField.auto_now_add
自动地 当对象时将字段设置为现在 是首先创建的。对创作有用 的时间戳。请注意,当前 始终使用日期;这不仅仅是一个 您可以覆盖的默认值。
如果这不仅仅是“何时添加/编辑”字段,答案是使用
default=datetime.date.today
注意没有括号。这会将默认值设置为函数,而不是在评估模型时函数返回的值。
【讨论】:
请改用auto_now_add,因为auto_now 会在对象被修改时更改投票日期。
http://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.DateField.auto_now_add
【讨论】:
这解决了我的问题:
vote_date = models.DateField(_('vote date'), null=False, blank=False, auto_now=True)
【讨论】:
django command extensions 可以帮助您解决很多问题,例如:
- CreationDateTimeField - DateTimeField 将自动 设置对象第一次出现的日期 保存到数据库中。工作于 与弃用的方式相同 auto_now_add 关键字。
- ModificationDateTimeField - DateTimeField 将自动 设置保存对象的日期 到数据库。以同样的方式工作 作为已弃用的 auto_now 关键字。
【讨论】: