Flask 逆向炼金术
这是我的模型 一个作业最多可以有两个侧面(正面或背面)或只有正面 每一面都有多块Flask 逆向炼金术,flask,sqlalchemy,flask-sqlalchemy,Flask,Sqlalchemy,Flask Sqlalchemy,这是我的模型 一个作业最多可以有两个侧面(正面或背面)或只有正面 每一面都有多块 class Job(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(120), nullable=False) sides = db.relationship('Side', backref=db.backref('job', lazy=True)) class Side(
class Job(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120), nullable=False)
sides = db.relationship('Side', backref=db.backref('job', lazy=True))
class Side(db.Model):
id = db.Column(db.Integer, primary_key=True)
job_id = db.Column(db.Integer, db.ForeignKey('job.id'))
pieces = db.relationship('Piece', backref='side', lazy='select')
class Piece(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), unique=True, nullable=False)
filename_img = db.Column(db.String(50), unique=True, nullable=True)
side_id = db.Column(db.Integer, db.ForeignKey('side.id'))
通常情况下,我通过以下方式完成这些作品:
获取作业Id->侧面->工件
填充数据库的示例
Job 1
Front
Piece 1
Piece 2
Back
Piece 1
Job 2
Front
Piece 3
Piece 4
Back
Piece 3
Piece 4
上面的示例显示工件1有正面和背面,工件2只有一面,即工件1的正面。在这种情况下,我想用片段而不是边进行迭代。可能吗
我想要的结果是:
Job 1
Piece 1
Front
Back
Piece 2
Front
Job 2
Piece 3
Front
Back
Piece 4
Front
Back
我认为你们需要一个边和块之间的多对多关联表,然后在工作中添加块作为关系。这可能会奏效:
sides_pieces = db.Table(
'sides_pieces',
db.Column('side_id', db.Integer, db.ForeignKey('sides.id'), nullable=False),
db.Column('piece_id', db.Integer, db.ForeignKey('pieces.id'), nullable=False)
)
class Job(db.Model):
__tablename__ = 'jobs'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(120), nullable=False)
sides = db.relationship('Side', backref=db.backref('job', lazy=True))
pieces = db.relationship('Piece', backref=db.backref('job', lazy=True))
class Side(db.Model):
__tablename__ = 'sides'
id = db.Column(db.Integer, primary_key=True)
job_id = db.Column(db.Integer, db.ForeignKey('jobs.id'))
pieces = db.relationship('Piece', secondary=sides_pieces, back_populates="sides")
class Piece(db.Model):
__tablename__ = 'pieces'
id = db.Column(db.Integer, primary_key=True)
job_id = db.Column(db.Integer, db.ForeignKey('jobs.id'))
name = db.Column(db.String(50), unique=True, nullable=False)
filename_img = db.Column(db.String(50), unique=True, nullable=True)
sides = db.relationship('Side', secondary=sides_pieces, back_populates="pieces")