Python WTForms复选框字段未填充

Python WTForms复选框字段未填充,python,flask-wtforms,Python,Flask Wtforms,一般来说,我对Python&Flask还比较陌生,但我对复选框有一个问题,我无法理解。数据库字段是一个整数(SQLite)。当我创建记录时,它与1或0一起工作。但是,当我尝试使用WTForms编辑记录时,我无法使复选框反映数据库中的内容-1或0(选中或未选中)。下面讨论的字段是经理、部门负责人和管理员。不知道我错过了什么?如有任何建议,将不胜感激 为文字墙道歉,但我想确保我没有遗漏任何内容 模型 形式 控制器 @mod_user.route('/edit/<int:id>', m

一般来说,我对Python&Flask还比较陌生,但我对复选框有一个问题,我无法理解。数据库字段是一个整数(SQLite)。当我创建记录时,它与1或0一起工作。但是,当我尝试使用WTForms编辑记录时,我无法使复选框反映数据库中的内容-1或0(选中或未选中)。下面讨论的字段是经理、部门负责人和管理员。不知道我错过了什么?如有任何建议,将不胜感激

  • 为文字墙道歉,但我想确保我没有遗漏任何内容
模型

形式

控制器

@mod_user.route('/edit/<int:id>', methods=['GET', 'POST'])
@login_required
def edit(id):
u = User.query.filter_by(id=id).first_or_404()
form = UserForm()
form.process(formdata=request.form, obj=u)
return render_template('user/edit.html', form=form, u = u)
@mod_user.route('/edit/',methods=['GET',POST']
@需要登录
def编辑(id):
u=User.query.filter\u by(id=id).first\u或\u 404()
form=UserForm()
流程(formdata=request.form,obj=u)
返回呈现模板('user/edit.html',form=form,u=u)
Edit.html

<form method="POST" action="{{ url_for('user.update', id=u.id) }}" accept-charset="UTF-8" role="form" id="UserForm">
{{ form.csrf_token }}
{{ form.id }}
<p><label>First Name: </label>{{ form.firstname(class_='form-control') }}</p>
<p><label>Last Name: </label>{{ form.lastname(class_='form-control') }}</p>
<p><label>Email: </label>{{ form.email(class_='form-control') }}</p>
<p><label>Location: </label>{{ form.locationid(class_='form-control') }}</p>
<p><label>Dept: </label>{{ form.departmentid(class_='form-control') }}</p>
<p><label>Job Title: </label>{{ form.job_title(class_='form-control') }}</p>
<p><label>Mobile Phone: </label>{{ form.mobile_phone(class='form-control', placeholder='(555) 555-1212') }}</p>
<p><label>Manager: </label>{{ form.manager(class_='fancy-checkbox', value=1) }}</p>
<p><label>Dept Head: </label>{{ form.dept_head(class_='fancy-checkbox', value=1) }}</p>
<p><label>Admin: </label>{{ form.admin(class_='fancy-checkbox', value=1) }}</p>
{{ form.submit(class_='btn btn-primary btn-lg') }}
</form>

{{form.csrf_token}
{{form.id}
名字:{{form.firstname(class='form-control')}

姓氏:{{form.lastname(class='form-control')}

电子邮件:{{form.Email(class='form-control')}

位置:{form.locationid(class='form-control')}

部门:{form.departmentid(class='form-control')}

职务:{{form.Job_Title(class='form-control')}

移动电话:{{form.Mobile_Phone(class='form-control',占位符='(555)555-1212')}

管理器:{form.Manager(class='fancy-checkbox',value=1)}

部门负责人:{form.Dept\u Head(class='fancy-checkbox',value=1)}

管理员:{form.Admin(class='fancy-checkbox',value=1)}

{{form.submit(class='btn btn primary btn lg')}
资料

正在运行的表单(管理员用户示例,应全部选中)

为什么您将管理员和部门负责人定义为整数而不是布尔值?因为SQLite在v3文档中没有布尔数据类型——除非我读错了?SQLite也是新手,所以这可能是个问题。您完全可以将其声明为db.Boolean,但在后台它仍然是一个整数。但这将告诉python将字段处理为True/false我发布的第一个链接来自SQLAlchemy自己的文档,这是来自flask SQLAlchemy Ok-这很有意义,谢谢。我已经将它们更改为db.Boolean,它在控制台中工作,在创建用户对象时发送True、True、True。但是当我通过Edit.html进行编辑时,我得到一个typeError:“1”不是布尔值。在复选框字段中尝试了value=1和value=True。似乎它将value=True或value=1作为字符串发送?为什么您将admin和dept_head定义为整数而不是布尔值?因为SQLite在v3文档中没有布尔数据类型——除非我读错了?SQLite也是新手,所以这可能是个问题。您完全可以将其声明为db.Boolean,但在后台它仍然是一个整数。但这将告诉python将字段处理为True/false我发布的第一个链接来自SQLAlchemy自己的文档,这是来自flask SQLAlchemy Ok-这很有意义,谢谢。我已经将它们更改为db.Boolean,它在控制台中工作,在创建用户对象时发送True、True、True。但是当我通过Edit.html进行编辑时,我得到一个typeError:“1”不是布尔值。在复选框字段中尝试了value=1和value=True。似乎它正在以字符串形式发送value=True或value=1?
@mod_user.route('/edit/<int:id>', methods=['GET', 'POST'])
@login_required
def edit(id):
u = User.query.filter_by(id=id).first_or_404()
form = UserForm()
form.process(formdata=request.form, obj=u)
return render_template('user/edit.html', form=form, u = u)
<form method="POST" action="{{ url_for('user.update', id=u.id) }}" accept-charset="UTF-8" role="form" id="UserForm">
{{ form.csrf_token }}
{{ form.id }}
<p><label>First Name: </label>{{ form.firstname(class_='form-control') }}</p>
<p><label>Last Name: </label>{{ form.lastname(class_='form-control') }}</p>
<p><label>Email: </label>{{ form.email(class_='form-control') }}</p>
<p><label>Location: </label>{{ form.locationid(class_='form-control') }}</p>
<p><label>Dept: </label>{{ form.departmentid(class_='form-control') }}</p>
<p><label>Job Title: </label>{{ form.job_title(class_='form-control') }}</p>
<p><label>Mobile Phone: </label>{{ form.mobile_phone(class='form-control', placeholder='(555) 555-1212') }}</p>
<p><label>Manager: </label>{{ form.manager(class_='fancy-checkbox', value=1) }}</p>
<p><label>Dept Head: </label>{{ form.dept_head(class_='fancy-checkbox', value=1) }}</p>
<p><label>Admin: </label>{{ form.admin(class_='fancy-checkbox', value=1) }}</p>
{{ form.submit(class_='btn btn-primary btn-lg') }}
</form>