간단한 라디오 필드가 있으며 항상 validate_on_submit이 false를 반환합니다. form.errors를 출력 할 때, "유효하지 않은 선택"이 coerce = int에도 불구하고 라디오 필드의 값으로 전달되고있는 것처럼 보입니다.validate_on_submit은 Flask WTForms를 사용하여 항상 false를 반환합니다.
양식에서 반환 된 내용이 무엇이든지 나올 것으로 생각하지 않습니다. 올바른 방법으로 동적 선택을하는 것이 좋겠습니다. 나는 이것이 왜 실패하는지 이해하지 못합니다.
내 프로젝트의 관련 부분은 다음과 같습니다.
forms.py :
class SelectRecord(Form):
rid = RadioField("Record Select", choices=[], coerce=int,validators=[InputRequired()])
views.py :
@mod.route('/select/', methods=('GET', 'POST'))
@login_required
def select_view():
form = SelectRecord(request.form)
if form.validate_on_submit():
rid = form.data.rid
if form['btn'] == "checkout":
# check out the requested record
Records.checkoutRecord(rid)
return render_template('/records/edit.html',rid=rid)
elif form['btn'] == "checkin":
Records.checkinRecord(rid)
flash("Record checked in.")
else:
mychoices = []
recs_co = session.query(Records.id).filter(Records.editing_uid == current_user.id). \
filter(Records.locked == True)
for x in recs_co:
mychoices.append((x.rid,"%s: %s (%s)" % (x.a, x.b, x.c, x.d)))
x = getNextRecord()
mychoices.append((x.id,"%s: %s (%s %s)" % (x.a, x.b, x.c, x.d)))
form.rid.choices = mychoices
print form.errors
return render_template('records/select.html', form=form)
그리고 내 템플릿 (select.html) :
<form method="POST" action="/select/" class="form form-horizontal" name="select_view">
<h1>Select a record to edit:</h1>
{{ render_field(form.rid, class="form-control") }}
{{ form.hidden_tag() }}
<button type="submit" name="btn" class="btn" value="Check Out">Check Out</button>
<button type="submit" name="btn" class="btn" value="Check In">Check In</button>
</form>
나는 또한 매우 유사하게 보이고 도울지도 모른 [이 질문] (http://stackoverflow.com/questions/13964152/not-a-valid-choice-for-dynamic-select-field-wtforms)를주의했다. –