Flask SQLAlchemy外键的自定义字段名称?

时间:2019-05-23 01:24:08

标签: flask model sqlalchemy flask-sqlalchemy

关系=许多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

2 个答案:

答案 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