Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flask 烧瓶:如何从表单中添加相关的一对多模型_Flask_Flask Sqlalchemy - Fatal编程技术网

Flask 烧瓶:如何从表单中添加相关的一对多模型

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

我有两个具有一对多关系的模型

第一款\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.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)