关系=许多Hero
有一个Planet
。
我希望能够致电hero.home_planet
,因为《星球大战》中的角色在太空中移动很多。但是在我的模型下,该字段称为planet_id
。
是否可以为外键字段设置自定义名称?
喜欢planet_id = db.Column( name ='home_planet')
吗?
我可以将表名更改为__tablename__ = 'home_planet'
吗?
class Hero(db.Model):
__tablename__ = 'heroes'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
race = db.Column(db.String())
planet_id = db.Column(db.Integer, db.ForeignKey('planets.id'), nullable=True)
def __repr__(self):
return '<Hero %r>' % self.name
答案 0 :(得分:1)
使用flask_sqlalchemy
:
class Planet(db.Model)
__tablename__ = 'planet'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(100))
heros = db.relationship('Hero', backref='home_planet')
class Hero(db.Model):
__tablename__ = 'heroes'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String())
race = db.Column(db.String())
planet_id = db.Column(db.Integer, db.ForeignKey('planets.id'), nullable=True)
def __repr__(self):
return '<Hero %r>' % self.name
现在您可以致电your_hero.home_planet
答案 1 :(得分:0)
值得一读SQLAlchemy docs来了解您可以在此处使用的大量选项,但是听起来像一个简单的relationship()
可以工作:
planet = relationship('Planet', backref='heroes')
您现在可以呼叫my_hero.planet
或反向呼叫my_planet.heroes