• 1000 отношения.
Когда я сохраняю данные с помощью формы на веб-странице. Ошибка не появляется, но данные также не сохраняются в таблицах базы данных.
Мои модели
################################################################
##### MODELS CONFIG ###################
################################################################
class dev_inventory(db.Model):
__tablename__ = 'inventory'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120), unique=True, nullable=False)
host = db.Column(db.String(120), unique=True, nullable=False)
username = db.Column(db.String(120), nullable=False)
password = db.Column(db.String(120), nullable=False)
secret = db.Column(db.String(120), nullable=False)
type = db.relationship('dev_type', backref='dev_inventory', lazy='dynamic')
group_name = db.relationship('dev_group', backref='dev_inventory', lazy='dynamic')
role = db.relationship('dev_role', backref='dev_inventory', lazy='dynamic')
def __init__(self,name,host,username,password,secret):
self.name = name
self.host = host
self.username = username
self.password = password
self.secret = secret
def __repr__(self):
return '<Host %r>' % self.host
class dev_group(db.Model):
__tablename__ = 'groups'
id = db.Column(db.Integer, primary_key=True)
group = db.Column(db.String(120), unique=True, nullable=False)
host_id = db.Column(db.Integer, db.ForeignKey('inventory.id'))
def __init__(self,group):
self.group = group
def __repr__(self):
return '<Group %r>' % self.group
class dev_role(db.Model):
__tablename__ = 'roles'
id = db.Column(db.Integer, primary_key=True)
role = db.Column(db.String(120), unique=True, nullable=False)
host_id = db.Column(db.Integer, db.ForeignKey('inventory.id'))
def __init__(self,role):
self.role = role
def __repr__(self):
return '<Role %r>' % self.role
class dev_type(db.Model):
__tablename__ = 'types'
id = db.Column(db.Integer, primary_key=True)
type = db.Column(db.String(120), unique=True, nullable=False)
host_id = db.Column(db.Integer, db.ForeignKey('inventory.id'))
def __init__(self,type):
self.type = type
class manage_users(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(120), unique=True, nullable=False)
password = db.Column(db.String(120), unique=True, nullable=False)
def __init__(self,username,password):
self.username = username
self.password = password
def __repr__(self):
return '<User %r>' % self.user
Сохранение данных во всех других таблицах работает нормально, кроме dev_inventory
I Я использую следующий код формы -
class AddDeviceForm(FlaskForm):
types_choices = [(type.type) for type in dev_type.query.order_by('type') ]
group_choices = [(group.group) for group in dev_group.query.order_by('group') ]
role_choices = [(role.role) for role in dev_role.query.order_by('role') ]
name = StringField('Devive Name')
host = StringField('Hostname/IP Address')
username = StringField('Device Username')
password = StringField('Device Password')
secret = StringField('Device Secret')
type = SelectField('Device Type', choices= types_choices)
group = SelectField('Device Group', choices=group_choices)
role = SelectField('Device Role', choices=role_choices)
submit = SubmitField('Add Device')
Когда я заполняю и сохраняю форму на веб-странице, она не выдает ошибок и ничего не выводит на консоль. хотя он отправляет запрос POST и дает 200 OK, но когда я проверяю БД, данные в этой таблице не сохраняются.
Вот мой код для конкретного представления -
@app.route('/add_device', methods=['GET','POST'])
def add_device():
form = AddDeviceForm()
if form.validate_on_submit():
name = form.name.data
host = form.host.data
username = form.username.data
password = form.password.data
secret = form.secret.data
type = form.type.data
group = form.group.data
role = form.role.data
device = dev_inventory(name, host, username, password, secret)
print(device)
db.session.add(device)
db.session.add(type)
db.session.add(group)
db.session.add(role)
db.session.commit()
return "Device Added Successfully"
return render_template('add_device.html', form=form)
У меня также есть попытался сохранить все переменные с помощью одной команды 'db.session.add ()', а затем я разбил это дальше, предполагая, что они связаны с разными таблицами, но ни одно из решений не работает.
Любая помощь по этому поводу был бы очень признателен.