Python Django-自模型创建以来的时间
如何计算模型创建后的时间?模型具有以下字段:Python Django-自模型创建以来的时间,python,django,datetime,timedelta,Python,Django,Datetime,Timedelta,如何计算模型创建后的时间?模型具有以下字段: 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() 我不明白的是,它在没有给我任何错误消息的
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")
我将得到的错误是错误:尝试打印异常时发生异常。如果我不包括最后一个try/catch块,我将根本得不到任何输出
有人有什么想法吗?编辑:重新发布django解决方案
在检查之前的stackoverflow post和其他一些post之后。他们建议不要使用auto_now_add,而是添加默认参数作为格式
created_date = models.DateTimeField(default=datetime.now())
我认为这可能是格式问题,这应该可以解决这个问题。
很抱歉我之前的回答
编辑:
检查django源代码后,auto_now_add参数似乎适用
value = datetime.datetime.now().time()
对实例进行建模
在我的测试中,如果我用datetime.now.time减去这个值,它就会弹出
但我不确定您的django版本,可能源代码已被修改。我尝试自己执行相同的操作,但出现错误:
can't subtract offset-naive and offset-aware datetimes
这是因为datetime.now是天真的,并且是在意识到的时候自己创建的。因此,请尝试使用timezone.now:
你能详细说明什么不起作用吗?错误消息?错误的结果?是的,我现在更新了问题。时间是不是因为你在模型的类中创建了一个方法?我只看到函数,没有类,所以我不确定尝试printe或print'Error':+stre如果要连接我认为需要转换的字符串,请查看从第一个异常中得到的消息stre@ValdemarEdvardSandalRolfsen然后读我的回答:我没有注意到这是一个django问题,我道歉。
can't subtract offset-naive and offset-aware datetimes
from django.utils import timezone
@property
def time_since_created(self):
return (timezone.now()-self.created_at).total_seconds()