我希望得到"年龄"我的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;
在我的模板中,根据此函数的输出,有不同的视图。但基本上没有输出。
当简单地&#34;打印&#34;那里的输出根本没有返回。返回&#34; datetime&#34;和#34; date_joined&#34;日期显示。当返回&#34; datetime.datetime&#34;的str(type())时退回。但是当返回差异(或差异的类型)时,绝对没有返回。在我的python控制台中执行相同操作时,会返回timedelta - 正是我所期望的。
知道接下来要去哪里搜索?我无法弄清楚发生了什么,以完全阻止此功能在不崩溃应用的情况下提供任何输出。
答案 0 :(得分:1)
您正试图减去偏移天真和偏移感知日期时间。
您需要安装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)
答案 1 :(得分:0)
您可以这样做:
@property
def isNew(self):
return (
datetime.datetime.now() - self.user.date_joined <
datetime.timedelta(days=40)
)
代码中的问题是
return False
作为你的财产的第一行,所以它总是返回false。
此外,你不应该在python中使用分号