'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