I have 2 tables with one to many relationship employee table and chamber table as the following :
class Employee(UserMixin,db.Model):
id=db.Column(db.Integer, primary_key=True)
username=db.Column(db.String(15), nullable=False, unique=True)
email=db.Column(db.String(),unique=True)
password=db.Column(db.String(80))
chamber_id=db.Column(db.Integer,db.ForeignKey('chamber.id'))
class Chamber(db.Model):
id=db.Column(db.Integer, primary_key=True)
name=db.Column(db.String(),nullable=False, unique=True)
tasks=db.relationship('Task',backref='chamber')
employees=db.relationship('Employee',backref='chamber')
I created Registration form for Employees that have Select field , i used QuerySelectField from WTFform. to retrieve the chamber name
class Employee_RegistrationForm(FlaskForm):
username=StringField('Name',validators=[InputRequired(),length(min=4,max=15,message='Username must be between 4 and fifteen leterrs')])
email=StringField('E-mail',validators=[InputRequired(),length(max=30),email()])
password=PasswordField('Password', validators=[InputRequired(),length(min=8,max=80,message='password must be between ')])
chamber=QuerySelectField('Chamber',query_factory=chamber_query)
submit=SubmitField('Create Account')
def chamber_query():
return Chamber.query
and in route code in
@app.route('/signup_employee', methods=['GET','POST'])
def signup_employee ():
form=Employee_RegistrationForm()
hashed_password=generate_password_hash(form.password.data,'sha256')
if form.validate_on_submit():
new_user=Employee(username=form.username.data,email=form.email.data,password=hashed_password,chamber_id=form.chamber.data)
#return '<h1>' + form.username.data +' '+ form.email.data+' '+ form.password.data +'</h1>'
db.session.add(new_user)
db.session.commit()
return 'New user has been created!'
return render_template('employee_signup.html',form=form)
How to use the value retrieved by QuerySelectForm ( Chamber name ) to insert the value of Chamber.id
in chamber_id in employee table?
question from:
https://stackoverflow.com/questions/65922790/how-to-insert-value-in-db-rleated-to-the-value-retrived-from-queryselectfield-fr