【问题标题】:Flask SQLAlchemy many-to-many relationship new attributeFlask SQLAlchemy 多对多关系新属性
【发布时间】:2016-12-03 22:09:50
【问题描述】:

我在我的数据库中使用 Flask 和 SQLAlchemy 以及多对多关系。它工作正常,但我想在我的表 user_routes 中添加新属性(字符串 tarif)。如何在查询中编辑此属性?有可能的?谢谢

这是我要插入的数据库查询

route = get_route(request.form['fromStation'],request.form['toStation'],date_object)
user = get_user(request.form['userToken'])
route.users.append(user)
user.routes.append(route)
db.session.commit()

型号

from app import db

user_routes = db.Table('user_routes',
    db.Column('route_id', db.Integer, db.ForeignKey('route.route_id'), primary_key=True),
    db.Column('user_id', db.Integer, db.ForeignKey('user.user_id'), primary_key=True)
)

class User(db.Model):
    user_id = db.Column(db.Integer, primary_key=True)
    token = db.Column(db.String(255), unique=True)
    routes = db.relationship("Route", secondary=user_routes)

    def __repr__(self):
        return '<User %r>' % (self.token)

class Route(db.Model):
    route_id = db.Column(db.Integer, primary_key=True)
    route_from = db.Column(db.String(100))
    route_to = db.Column(db.String(100))
    date_time = db.Column(db.DateTime)
    free_seats = db.Column(db.Integer)
    users = db.relationship("User", secondary=user_routes)

    def __repr__(self):
        return '<Route %r>' % (self.route_id)

【问题讨论】:

    标签: python sqlalchemy many-to-many


    【解决方案1】:

    下班后。我找到了解决方案Association Object

    from app import db
    
    class User_has_route(db.Model):
        __tablename__ = 'user_has_route'
        route_id = db.Column(db.Integer, db.ForeignKey('route.route_id'), primary_key=True)
        user_id = db.Column(db.Integer, db.ForeignKey('user.user_id'), primary_key=True)
        tarif = db.Column(db.String(30))
        route = db.relationship("Route", back_populates="users")
        user = db.relationship("User", back_populates="routes")
    
    class User(db.Model):
        __tablename__ = 'user'
        user_id = db.Column(db.Integer, primary_key=True)
        token = db.Column(db.String(255), unique=True)
        routes = db.relationship("User_has_route", back_populates="user")
    
        def __repr__(self):
            return '<Userik %r>' % (self.token)
    
    class Route(db.Model):
        __tablename__ = 'route'
        route_id = db.Column(db.Integer, primary_key=True)
        route_from = db.Column(db.String(100))
        route_to = db.Column(db.String(100))
        date_time = db.Column(db.DateTime)
        free_seats = db.Column(db.Integer)
        users = db.relationship("User_has_route", back_populates="route")
    
        def __repr__(self):
            return '<Route %r>' % (self.date_time)
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-15
    • 2021-08-31
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2021-07-10
    • 1970-01-01
    • 2018-09-07
    相关资源
    最近更新 更多