Django DateTimeField遇到datetime.now问题

时间:2011-10-20 12:36:14

标签: django datetime

在Django中存在一种在模型中使用以下定义的通用模式:

some_date = models.DateTimeField(default=datetime.now)

遗憾的是,这会产生问题,因为它将some_date的值设置为:u'2011-10-18 08:14:30.242000'

如果您现在使用表单集让用户提交/编辑其他实例,则表单将始终评估为更改。

原因是初始日期时间值为u'2011-10-18 08:14:30.242000',表单小部件的当前值为u'2011-10-18 08:14:30'。这总是不同的。

很遗憾,我写不出类似"default=currenttime"auto_addauto_now_add的内容有不同的行为,并始终将字段设置为editable=False

1 个答案:

答案 0 :(得分:0)

您可以使用模型的保存方法,或者在forms.Form

中复制此行为
class Something(models.Model):
    pub_date = models.DateTimeField(editable=False)
    change_date = models.DateTimeField(editable=False)

    def save(self, *args, **kwargs):
        if not self.id:
            self.pub_date = datetime.datetime.today()
        self.change_date = datetime.datetime.today()
        super(Something, self).save(*args, **kwargs)