我正在创建一个django应用程序/网站,我遇到了一些我不理解的布尔结果。
在我的模型中,我有一个包含2个函数的Article类:
class Article(models.Model):
#some vars
basetime = models.IntegerField()
duration = models.IntegerField()
has_begun = models.BooleanField()
def remainingTime(self):
if(self.basetime + self.duration) - time.time() >= 0:
return ((self.basetime + self.duration) - time.time())
else:
return -1
def stillAvailable(self):
if self.remainingTime() >= 0:
return True
return False
在我看来,我有一个功能检查:
def check(request,i):
try:
article = Article.objects.get(pk=i)
except Article.DoesNotExist:
return ccm(request)
if (article.stillAvailable):
return test(request,article.remainingTime)
else:
return quid(request)
当页面调用检查时,我的浏览器显示测试页面,参数article.remainingTime为-1。 (这是我想做的正确值。)
我的问题是:如果article.remainingTime = -1,那么article.stillAvailable应该返回False,因此check函数应该返回quid(request)。 我没有看到为什么django / python interpreter评估article.stillAvailable True的原因。
如果有人可以提供帮助,那就非常感激:P
答案 0 :(得分:2)
您正在使用
if (article.stillAvailable):
作为属性,而不是将其称为方法。由于属性存在,它被解释为非虚假。您只需添加括号即可调用方法。