Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 减去Django中的日期时间-无输出_Python_Django_Python 2.7 - Fatal编程技术网

Python 减去Django中的日期时间-无输出

Python 减去Django中的日期时间-无输出,python,django,python-2.7,Python,Django,Python 2.7,我想在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 (

我想在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;
类用户数据(models.Model):
user=models.ForeignKey(user,unique=True)
出生=models.IntegerField(默认值=1900)
性别=models.CharField(最大长度=1)
@财产
def是新的(自我):
如果(datetime.datetime.now()-self.user.date_加入)
在我的模板中,根据此函数的输出有不同的视图。但基本上没有产出

当简单地“打印”输出时,没有返回任何内容。返回“日期时间”和“加入日期”时,会显示日期。当返回str(type())时,将同时返回“datetime.datetime”。但当返回差异(或差异类型)时,绝对不会返回任何内容。在python控制台中执行相同操作时,会返回一个timedelta,这正是我所期望的

你知道下一步在哪里搜索吗?我不知道发生了什么事情,完全阻止此功能在不破坏应用程序的情况下提供任何输出。

您只需执行以下操作:

@property
def isNew(self):
    return (
        datetime.datetime.now() - self.user.date_joined < 
        datetime.timedelta(days=40)
    )
作为属性的第一行,所以它总是返回false


此外,您不应该在python中使用分号,因为您试图减去offset naive和offset aware日期时间

您需要安装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)
导入日期时间,pytz @财产 def是新的(自我): 返回pytz.utc.localize(datetime.datetime.now())-self.user.date\u
您能给我们看看您的型号吗?我现在就添加了完整的型号;)只是为了测试而添加了它,但在我的帖子中忘记了删除它-这解决了问题-非常感谢。为什么在这个上下文中会使用不同类型的日期时间?您有offset aware和offset naive datetime。使用datetime.datetime.now()时,应用程序不知道要使用哪个时区。更多信息请点击此处:
import datetime, pytz

@property
def isNew(self):
    return pytz.utc.localize(datetime.datetime.now())-self.user.date_joined < datetime.timedelta(days=40)