2013-05-11 3 views
0

장고 앱/웹 사이트를 만들고 있는데 이해할 수없는 부울 결과로 인해 문제가 발생합니다. , 브라우저 표시를Django - 모델 및 뷰의 함수가 올바른 부울 값을 반환하지 않습니다.

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) 

페이지가 확인 전화 :

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 

그리고 내보기에

가 나는 기능 검사가 내 모델에서

, 나는이 개 기능을 가진 제 클래스가 테스트 페이지 및 인수 article.remainingTime은 -1입니다. (내가 원하는 일에 대한 올바른 가치).

내 문제는 : article.remainingTime = -1 인 경우 article.stillAvailable은 False를 반환해야하므로 check 함수는 quid (request)를 반환해야합니다. django/python 인터프리터가 article.stillAvailable True를 평가하는 이유가 표시되지 않습니다. 사람이 도움을 줄 수있는 경우

, 그 매우 이해할 수있을 것입니다 : P

+0

'article.remainingTime'이'-1'인지 어떻게 확인 하시겠습니까? 'check' 함수에 몇 가지 로그를 넣었습니까? – MostafaR

+0

테스트 뷰는 주어진 인자를 단순히 표시하고, 제 경우에는 -1입니다. 또한 article.remainingTime을 표시하는 자바 스크립트 경고를 내 렸습니다.이 메서드도 -1입니다. – Benjamin

답변

2

당신은 오히려 방법으로 호출보다는 속성으로

if (article.stillAvailable): 

을 사용하고 있습니다. 특성이 존재하므로 false가 아닌 것으로 해석됩니다. 메서드를 호출하기 위해서는 괄호를 추가하면됩니다.

+0

와우. 나는 대답을 간단하다고 생각했으나,이 시점에서 ... 나는 좀 더 일해야만한다! 어쨌든, 감사합니다! – Benjamin

관련 문제