【问题标题】:Django DateTimeField has problems with datetime.nowDjango DateTimeField 与 datetime.now 有问题
【发布时间】:2011-10-20 12:36:14
【问题描述】:

在 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

【问题讨论】:

  • 您可能想在其中提及您所追求的行为。它应该将日期/时间设置为什么?它应该如何与表单集一起使用?

标签: django datetime


【解决方案1】:

您可以像这样使用模型的保存方法或在 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)

【讨论】:

  • 嗨,我看不出这对我上面的问题有什么帮助。我不讨厌我不知道更改日期的问题。问题是 datetime.now 的精度高于 html 小部件可以提供的精度,因此我总是得到一个认为包含更改的表单的表单集。
猜你喜欢
  • 2015-01-11
  • 2014-06-17
  • 2015-06-19
  • 2011-02-15
  • 2017-03-05
  • 2017-03-17
  • 1970-01-01
  • 1970-01-01
  • 2018-06-17
相关资源
最近更新 更多