WTForms复选框字段未填充

时间:2019-03-21 14:37:57

标签: python flask-wtforms

我一般来说对Python&Flask还是相当陌生,但是我遇到了一个复选框无法解决的问题。数据库字段是一个整数(SQLite)。创建记录时,它可以使用1或0。但是,当我尝试使用WTForms编辑记录时,无法获得反映数据库中内容的复选框-1或0(选中或未选中)。下面有问题的字段是manager,dept_head和admin。不确定我缺少什么?任何建议将不胜感激。

  • 道歉,但我想确保我没有遗漏任何东西。

型号

class User(UserMixin, db.Model):

__tablename__ = 'users'

id              = db.Column(db.Integer, primary_key=True)
firstname       = db.Column(db.String(128), nullable=False)
lastname        = db.Column(db.String(128), nullable=False)
email           = db.Column(db.String(128), nullable=False)
password_hash   = db.Column(db.String(128), nullable=True)
locationid      = db.Column(db.Integer, db.ForeignKey('locations.id'), nullable=True)
location        = db.relationship('Location', backref='users')
departmentid    = db.Column(db.Integer, db.ForeignKey('departments.id'), nullable=True)
department      = db.relationship('Department', backref='users')
job_title       = db.Column(db.String(128), nullable=True)
mobile_phone    = db.Column(db.String(16), nullable=False)
manager         = db.Column(db.Integer, nullable=False, default=0)
dept_head       = db.Column(db.Integer, nullable=False, default=0)
admin           = db.Column(db.Integer, nullable=False, default=0)
date_created    = db.Column(db.DateTime, default=db.func.current_timestamp())
date_updated    = db.Column(db.DateTime, default=db.func.current_timestamp(), onupdate=db.func.current_timestamp())
date_deleted    = db.Column(db.DateTime)

表格

class UserForm(FlaskForm):
id              = HiddenField('ID')
firstname       = StringField('First Name', validators=[DataRequired()])
lastname        = StringField('Last Name', validators=[DataRequired()])
email           = StringField('Email', validators=[DataRequired(), Email()])
locationid      = SelectField('Location')
departmentid    = SelectField('Department')
job_title       = StringField('Job Title')
mobile_phone    = StringField('Mobile Phone', validators=[DataRequired()])
manager         = BooleanField('Manager', default=False, false_values=(False, 'false', 0, '0'))
dept_head       = BooleanField('Dept Head', default=False, false_values=(False, 'false', 0, '0'))
admin           = BooleanField('Admin', default=False, false_values=(False, 'false', 0, '0'))
submit          = SubmitField('Create')

def __init__(self, *args, **kwargs):
    super(UserForm, self).__init__()
    self.locationid.choices = [(l.id, l.name) for l in Location.query.all()]
    self.departmentid.choices = [(d.id, d.name) for d in Department.query.all()]

控制器

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

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>

数据 Database

正在使用的表单(管理员用户示例,应选中所有复选框) Web Form

0 个答案:

没有答案