Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
100 views
in Technique[技术] by (71.8m points)

python - How to insert value in DB rleated to the value retrived from QuerySelectField from WTFFORMS

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
Waitting for answers

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...