'WTForms SelectField Dynamic choices
I was trying to make dynamic choices for choosing a department. "Dept_code" should be value of input which a user cannot see. On other hand, "Dept_name" should what a user can see. However, a user can see "dept_code" & "dept_name" both as a tuple.
"dept_code" = 'fin' "dept_name" = 'Finance'
My website look like " ('fin', 'Finance'), but it should be Finance.
@app.route('/employees/new' , methods=['GET','POST'])
def emplyees_new():
form = NewEmployeeForm()
depts = db.session.query(Department.dept_code , Department.dept_name)
form.dept_code.choices = depts
if form.validate_on_submit():
name = form.name.data
state = form.state.data
dept_code= form.dept_code.data
emp = Employee(name=name, state=state , dept_code=dept_code)
db.session.add(emp)
db.session.commit()
return redirect('/phones')
else:
return render_template('add_employee_form.html' , form=form)
emphasized text class NewEmployeeForm(FlaskForm):
name = StringField('Employee Name')
state = SelectField('State', choices= [(st,st) for st in states])
dept_code = SelectField('department code')
class Department(db.Model):
""" Depoartment Model """
__tablename__ = 'departments'
dept_code = db.Column(db.Text, primary_key=True)
dept_name = db.Column(db.Text, nullable=False, unique =True)
phone = db.Column(db.Text)
def __repr__(self):
return f'<Department {self.dept_code} {self.dept_name} {self.phone} >'
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
