0

我正在创建一个 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)

当一个页面调用check时,我的浏览器显示测试页面,参数article.remainingTime为-1。(这是我想做的正确值)。

我的问题是:如果 article.remainingTime = -1,那么 article.stillAvailable 应该返回 False,所以检查函数应该返回 quid(request)。我看不出 django/python 解释器评估 article.stillAvailable True 的原因。

如果有人可以提供帮助,将不胜感激:P

4

1 回答 1

2

您正在使用

if (article.stillAvailable):

作为属性,而不是作为方法调用它。由于属性存在,它被解释为非假。您只需添加方括号即可调用该方法。

于 2013-05-11T12:24:20.327 回答