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):

メソッドとして呼び出すのではなく、属性として。属性が存在するため、false ではないと解釈されます。メソッドを呼び出すには、ブラケットを追加するだけです。

于 2013-05-11T12:24:20.327 に答える