Skip to main content
 首页 » 编程设计

python之在 Django 中减去日期时间之无输出

2025年05月04日29虾米哥

我想在我的 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)