Django-模型创建以来的时间



如何计算创建模型后的时间?该模型具有以下字段:

created_at = models.DateTimeField(auto_now_add=True)

这就是我尝试的:

from datetime import datetime, timedelta
@property
def time_since_created(self):
    return (datetime.now()-self.created_at).total_seconds()

我不明白的是,它崩溃时没有给我任何错误消息。如果我把它包装在这样的try/except块中:

@property
    def time_since_created(self):
        try:
            return (datetime.now()-self.created_at).total_seconds()
        except Exception as e:
            try:
                print("Error:" + e)
            except:
                print("Error: An exception occured when trying to print exception")

我将得到的错误是"Error: An exception occured when trying to print exception"。如果我不包括最后一个try/catch块,我就不会得到任何输出。

有人有什么想法吗?

我试图自己做同样的操作,但我遇到了错误:

can't subtract offset-naive and offset-aware datetimes

这是因为datetime.now()是幼稚的,而self.created_at是有意识的时间。所以尝试使用timezone.now()

from django.utils import timezone
@property
def time_since_created(self):
    return (timezone.now()-self.created_at).total_seconds()

编辑:重新发布django解决方案

在这里查看了以前的stackoverflow帖子和其他一些帖子之后。他们建议不要使用auto_now_add,而是添加default参数作为格式。

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

我认为这可能是格式问题,这应该可以解决这个问题。很抱歉我之前的回答。

编辑:在检查了这里的django源代码后,auto_now_add arg似乎应用了

value = datetime.datetime.now().time()

以建模实例。

在我的测试中,如果我用datetime.now().time()"减去"这个值,它就会弹出

TypeError: unsupported operaand type(s) for -: 'datetime.datetime' and 'datetime.time'

但我不确定你的django版本,也许源代码已经被修改了。

相关内容

  • 没有找到相关文章

最新更新