Django - 模型和视图中的函数不返回正确的布尔值

时间:2013-05-11 12:11:24

标签: python django-models django-views boolean-operations

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

1 个答案:

答案 0 :(得分:2)

您正在使用

if (article.stillAvailable):

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