Flask 烧瓶:如何从表单中添加相关的一对多模型
我有两个具有一对多关系的模型 第一款\u车型Flask 烧瓶:如何从表单中添加相关的一对多模型,flask,flask-sqlalchemy,Flask,Flask Sqlalchemy,我有两个具有一对多关系的模型 第一款\u车型 class Datacenter(db.Model): id = db.Column(db.Integer, primary_key=True) number = db.Column(db.Integer) name = db.Column(db.String(64), index=True, unique=True) place = db.Column(db.String(64)) capacity = db
class Datacenter(db.Model):
id = db.Column(db.Integer, primary_key=True)
number = db.Column(db.Integer)
name = db.Column(db.String(64), index=True, unique=True)
place = db.Column(db.String(64))
capacity = db.Column(db.Integer, index=True)
server = db.relationship('Server', backref='datacenter', lazy=True)
tier = db.Column(db.Integer)
def __repr__(self):
return '<Datacenter {}>'.format(self.name)
和路由器
@app.route('/add_server', methods = ['POST', 'GET'])
def add_server():
form = ServerForm(request.form)
if request.method=='POST' and form.validate():
data = Server(
number=form.number.data,
name=form.name.data,
factory=form.factory.data,
model=form.model.data,
serial=form.serial.data,
os=form.os.data,
datacener_id=form.datacener_id.data
)
db.session.add(data)
db.session.commit()
flash('Server created successfully!')
return redirect('/')
return render_template('new_server.html', form=form)
但当我转到添加新模型的页面时,下拉列表为空。告诉我我需要在代码中更改什么我找到了这个解决方案
datacener\u id=SelectField('datacener',choices=[(x.id,x.name)for x in db.session.query(datacener.all()])
for select choice。但不幸的是,我的函数add\u server()没有将模型保存到数据库中
class ServerForm(FlaskForm):
number = IntegerField('Number')
name = StringField('Name')
factory = StringField('Factory')
model = StringField('Model')
serial = IntegerField('Model')
os = StringField('OS')
datacener_id = SelectField('Datacener', choices=[ ???? ])
@app.route('/add_server', methods = ['POST', 'GET'])
def add_server():
form = ServerForm(request.form)
if request.method=='POST' and form.validate():
data = Server(
number=form.number.data,
name=form.name.data,
factory=form.factory.data,
model=form.model.data,
serial=form.serial.data,
os=form.os.data,
datacener_id=form.datacener_id.data
)
db.session.add(data)
db.session.commit()
flash('Server created successfully!')
return redirect('/')
return render_template('new_server.html', form=form)