首页 > 解决方案 > Flask-SQLAlchemy 多重关系问题

问题描述

我正在构建一个使用 Flask-sqlalchemy 的应用程序。用户可以查看表格并创建从 A 点到 B 点的行程。数据保存到数据库。但是,我被困在想要在 Voyage Model 中使用相同外键的地方,但这给我带来了错误。

这是我的代码:

class User(db.Model):
    """User"""
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.Text, unique=True, nullable=False)
    password = db.Column(db.Text, nullable=False)
    email = db.Column(db.Text, unique=True, nullable=False)
    first_name = db.Column(db.Text, nullable=False)
    last_name = db.Column(db.Text, nullable=False) 
    clubs = db.relationship('Club', backref='users', cascade='all') 

class Voyage(db.Model):
    """Voyage"""
    __tablename__ = 'voyage'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'), primary_key=True)
    **start_point = db.Column(db.Integer, db.ForeignKey('clubs.id'))**
    **end_point = db.Column(db.Integer, db.ForeignKey('clubs.id'))**

class Club(db.Model):
    """Club"""
    __tablename__ = 'clubs'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.Text, nullable=False)
    address = db.Column(db.Text, nullable=False)
    city = db.Column(db.Text, nullable=False)
    state = db.Column(db.Text, nullable=False)
    zip = db.Column(db.Integer, nullable=False)
    lat = db.Column(db.Numeric, nullable=True)
    lon = db.Column(db.Numeric, nullable=True)
    tel = db.Column(db.Text, nullable=True) 
    url = db.Column(db.Text, nullable=True)
    users = db.relationship('User', backref='clubs', cascade='all')

非常感谢任何改进此代码的建议。

标签: pythonflask-sqlalchemy

解决方案


推荐阅读