Я пытался сохранить объект с отношением один ко многим в базу данных с помощью sqlalchemy.
Если запрос json достигает метода post, внешние ключи заполняются нулем.Я что-то упустил очевидное?
мой класс models.py:
from datetime import datetime
from config import db, ma
class ActionServer(db.Model):
__tablename__="actionserver"
id = db.Column(db.Integer, primary_key=True)
timestamp = db.Column(db.DateTime, default=datetime.utcnow, onupdate=datetime.utcnow)
returncode = db.Column(db.Integer)
#softwareID = db.Column(db.Integer)
softwareID = db.Column(db.Integer, db.ForeignKey('software.id'))
serverID = db.Column(db.Integer, db.ForeignKey('server.id'))
actionID = db.Column(db.Integer, db.ForeignKey('actions.id'))
comment = db.Column(db.String(64))
class Software(db.Model):
__tablename__ = "software"
id = db.Column(db.Integer, primary_key=True)
versionNumber = db.Column(db.Integer)
versionInfo = db.Column(db.String(64))
serverActions = db.relationship('ActionServer', backref='software', lazy=True)
class Server(db.Model):
__tablename__ = "server"
id = db.Column(db.Integer, primary_key=True)
ipAdress = db.Column(db.String(32))
certificate = db.Column(db.String(64))
# systemID = db.Column(db.Integer, db.ForeignKey('system.id'))
# softwareID = db.Column(db.Integer, db.ForeignKey('software.id'))
serverActions = db.relationship('ActionServer', backref='server', lazy=True)
class Actions(db.Model):
__tablename__ = "actions"
id = db.Column(db.Integer, primary_key=True)
type = db.Column(db.String(64))
serverActions = db.relationship('ActionServer', backref='actions', lazy=True)
class ActionServerSchema(ma.ModelSchema):
class Meta:
model = ActionServer
sql_session = db.session
class SoftwareSchema(ma.ModelSchema):
class Meta:
model = Software
sql_session = db.session
class ServerSchema(ma.ModelSchema):
class Meta:
model = Server
sql_session = db.session
class ActionSchema(ma.ModelSchema):
class Meta:
model = Actions
sql_session = db.session
и это мой метод записи:
def create(serveraction):
returncode = serveraction.get("returncode")
softwareID = serveraction.get("softwareID")
serverID = serveraction.get("serverID")
actionID = serveraction.get("actionID")
comment = serveraction.get("comment")
schema = ActionServerSchema()
new_serveraction = schema.load(serveraction, session=db.session).data
db.session.add(new_serveraction)
db.session.commit()
data = schema.dump(new_serveraction).data
return data, 201
Запросы get уже работают, выводятся внешние ключи, но.
Переменные заполняются правильными значениями при запуске метода (serverID = 3).
Спасибо за помощь!