0

これは本当に奇妙な質問ですが、なぜこれが起こっているのかわかりません:

私はこのコードを書きました:

stusr = int(su.total)
if not stusr == 0:

しかし、stusr.total が 0 になることは決してない (常に初期化される) という事実を知っていても、if コマンドを実行することはありません。パーセンテージを計算するために su.total で除算しようとしても、0 で除算できないというエラーが表示されます。

画面に表示stusrするとゼロ以外の値が表示されるので、正しく初期化すると確信しています。

これが私のモデルです

class StatsUser(models.Model):
  correct = models.IntegerField(default=0)
  incorrect = models.IntegerField(default=0)
  total = models.IntegerField(default=0)
  ...

これを理解するのを手伝ってくれることを願っています。

4

2 に答える 2

1

奇妙なイディオムですが、うまくいくはずです。次のことを試してください (正しい構文を使用してください)。

stusr = int(su.total)
if stusr:             # (all non-zero integer values are true)
    print("Yay, stusr is nonzero!")
else:
    print("Wha? But su.total is {}!".format(repr(su.total)))
于 2013-09-20T10:01:50.100 に答える
1

print su.totalint にキャストする前にa を実行できませんか? キャストする前にその値を確認します。さらに、合計フィールドは IntegerField であるため、これらのフィールドを int にキャストする必要はありません。

于 2013-09-20T10:04:19.647 に答える