2016-03-04 58 views
1

我有2個表:餐廳和食品,以及存儲的許多到2臺燒瓶SQLAlchemy的多對多的額外場

restaurants_foods = db.Table('restaurants_foods', 
db.Column('restaurant_id', db.Integer, db.ForeignKey('restaurants.id'), primary_key=True), 
db.Column('food_id', db.Integer, db.ForeignKey('foods.id'), primary_key=True), 
db.Column('food_price', db.Float)) 

class Food(Model): 
__tablename__ = "foods" 

id = db.Column(db.Integer, primary_key=True, autoincrement=True)  
name = db.Column(db.String(255), nullable=False) 
description = db.Column(db.String(255), nullable=True) 



class Restaurant(Model): 
__tablename__ = "restaurants" 

id = db.Column(db.Integer, primary_key=True, autoincrement=True)  
name = db.Column(db.String(255), nullable=False) 
foods = db.relationship('Food', secondary=restaurants_foods) 

現在,當我查詢Restautant.query之間的許多關係的第三個表restaurants_foods。 get(1).foods,我希望它包含restaurants_foods關聯表中的food_price列

回答

1

請看看在SQLAlchemy中配置many-to-many關係。你會想要這樣的事情:

restaurants_foods = db.Table('restaurants_foods', 
db.Column('restaurant_id', db.Integer, db.ForeignKey('restaurants.id'), primary_key=True), 
db.Column('food_id', db.Integer, db.ForeignKey('foods.id'), primary_key=True), 
db.Column('food_price', db.Float)) 


class Food(Model): 
__tablename__ = "foods" 

id = db.Column(db.Integer, primary_key=True, autoincrement=True) 
name = db.Column(db.String(255), nullable=False) 
description = db.Column(db.String(255), nullable=True) 
restaurants = relationship(
    "Restaurant", 
    secondary=restaurant_foods, 
    back_populates="foods" 
) 


class Restaurant(Model): 
__tablename__ = "restaurants" 

id = db.Column(db.Integer, primary_key=True, autoincrement=True) 
name = db.Column(db.String(255), nullable=False) 
foods = relationship(
    "Food", 
    secondary=restaurant_foods, 
    back_populates="restaurants" 
) 
相關問題