我是新手,ORM技术正在为我的学习做一个示例项目
在我的应用程序中,培训师可以教授一种或多种技术,因此我将我的表定义为吼叫
并且任何人都可以帮助我如何将上面的表定义转换为具有适当关系的模型
提前致谢
答案 0 :(得分:3)
你想要的是多对多的关系。 Flask-SQLAlchemy文档提供example of that here.
你有一个正确的想法,有一个表将它们链接在一起,但你真的不需要id
列,下面是弯曲到你的模型的例子。
technologies = db.Table('technologies',
db.Column('trainer_id', db.Integer, db.ForeignKey('trainer.id')),
db.Column('tech_id', db.Integer, db.ForeignKey('tech.id'))
)
class Trainer(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
phone = db.Column(db.String)
email = db.Column(db.String)
technologies = db.relationship('Tech', secondary=technologies,
backref=db.backref('trainers', lazy='dynamic'))
class Tech(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String)
现在您可以添加Trainers和Techs,然后根据需要分配它们:
nano_tech = Tech(name='Nano')
mega_tech = Tech(name='Mega')
bob = Trainer(name='Bob', email='Whatever', technologies=[nano_tech, mega_tech])
或者您可以将现有技术添加到现有培训师
trainer = Trainer.query.filter_by(name='Alice').first()
tech = Tech.query.filter_by(name='Super').first()
trainer.technologies.append(tech)
或其中的任何组合。