我想在我的 Django 应用程序中获取用户帐户的“年龄”。这就是我所做的:
class UserData(models.Model):
user = models.ForeignKey(User,unique=True)
birth = models.IntegerField(default=1900)
gender = models.CharField(max_length=1)
@property
def isNew(self):
if (datetime.datetime.now()-self.user.date_joined) < datetime.timedelta(days=40):
return True;
else:
return False;
在我的模板中有一个不同的 View ,具体取决于此函数的输出。但是基本没有输出。
当简单地“打印”输出时,根本没有任何返回。返回“datetime”和“date_joined”时显示日期。当返回两个“datetime.datetime”的 str(type()) 时返回。但是当返回差异(或差异的类型)时,绝对没有返回任何内容。在我的 python 控制台中执行相同操作时,会返回一个 timedelta - 正是我所期望的。
知道下一步要搜索哪里吗?我无法弄清楚到底发生了什么事才能完全阻止此函数在不使应用程序崩溃的情况下提供任何输出。
最佳答案
您正在尝试减去原始偏移和偏移感知日期时间。
您需要安装 pytz pip install pytz
并使用以下方法更改您的方法:
import datetime, pytz
@property
def isNew(self):
return pytz.utc.localize(datetime.datetime.now())-self.user.date_joined < datetime.timedelta(days=40)
关于python - 在 Django 中减去日期时间 - 无输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258949/