WTForms: IntegerField überspringt den Zwang, wenn der Zeichenfolgenwert '0' ist

Diese Frage deckt fast ab, was ich hier will, aber nicht ganz.

Es scheint, als würde IntegerField den Zwang überspringen, wenn der Zeichenfolgenwert '0' ist. Jede andere positive ganze Zahl scheint in Ordnung zu sein.

Hier ist ein Beispiel für '0':

from wtforms import validators, Form, IntegerField
from webob.multidict import MultiDict

class TestForm(Form):
    num = IntegerField('How Many?', [validators.DataRequired('num required.'), validators.NumberRange(min=0, max=100)])

data_in = {'num': '0'}  # Note '0' is a string as would be POSTed
test_form = TestForm(formdata=MultiDict(data_in))
print("HTML Render: %s" % test_form.num())
print("     Validate: %s" % test_form.validate())
print("       Errors: %s" % test_form.errors)

Ausgabe davon ist:

HTML Render: <input id="num" name="num" type="text" value="0">
     Validate: False
       Errors: {'num': ['num required.']}

Und alternativ am Beispiel von '66':

from wtforms import validators, Form, IntegerField
from webob.multidict import MultiDict

class TestForm(Form):
    num = IntegerField('How Many?', [validators.DataRequired('num required.'), validators.NumberRange(min=0, max=100)])

data_in = {'num': '66'}  # Note '66' is a string as would be POSTed
test_form = TestForm(formdata=MultiDict(data_in))
print("HTML Render: %s" % test_form.num())
print("     Validate: %s" % test_form.validate())
print("       Errors: %s" % test_form.errors)

Daraus ist:

HTML Render: <input id="num" name="num" type="text" value="66">
     Validate: True
       Errors: {}

Was gibt? Ich könnte stattdessen InputRequired verwenden, um den Typ "Agnostisch" beizubehalten, aber das macht den Zweck dieses Befehls völlig zunichte.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage