2013-05-11 30 views
0

我正在創建一個django應用程序/網站,並且遇到了一些布爾結果的麻煩,我不明白。Django - 模型和視圖中的函數不返回正確的布爾值

在我的模型,我有一個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,所以檢查函數應該返回quid(request)。 我看不到django/python解釋器評估article.stillAvailable的原因。

如果有人可以幫助,那將會是非常讚賞:P

+0

你怎麼確定'article.remainingTime'是'-1'?你有沒有在「check」功能中加入一些日誌? – MostafaR 2013-05-11 12:19:37

+0

測試視圖只顯示給定的參數,在我的情況下它是-1。我也做了一個JavaScript alert顯示article.remainingTime,並且它也是-1。 – Benjamin 2013-05-11 12:23:47

回答

2

您正在使用

if (article.stillAvailable): 

作爲一個屬性,而不是調用它的方法。由於該屬性存在,它被解釋爲非假。你只需要添加括號來調用方法。

+0

哇。我認爲答案很簡單,但在這一點上......我必須再努力一點! 無論如何,謝謝你! – Benjamin 2013-05-11 12:38:22