SqlAlchemy和Flask,如何查询多对多关系

25 浏览
0 Comments

SqlAlchemy和Flask,如何查询多对多关系

我需要帮助创建SqlAlchemy查询。

我正在进行一个Flask项目,使用SqlAlchemy。我在models.py文件中创建了3个表:Restaurant(餐厅),Dish(菜肴)和restaurant_dish(餐厅和菜肴的关联表)。

restaurant_dish = db.Table('restaurant_dish',

db.Column('dish_id', db.Integer, db.ForeignKey('dish.id')),

db.Column('restaurant_id', db.Integer, db.ForeignKey('restaurant.id'))

)

class Restaurant(db.Model):

id = db.Column(db.Integer, primary_key = True)

name = db.Column(db.String(64), index = True)

restaurant_dish = db.relationship('Dish', secondary=restaurant_dish,

backref=db.backref('dishes', lazy='dynamic'))

class Dish(db.Model):

id = db.Column(db.Integer, primary_key = True)

name = db.Column(db.String(64), index = True)

info = db.Column(db.String(256), index = True)

我已经向restaurant_dish表中添加了数据,应该可以正常工作。我需要帮助的地方是如何正确地使用Restaurant获取Dish。原始SQL可能是这样的:

SELECT dish_id FROM restaurant_dish WHERE restaurant_id == id

我已经完成的但不起作用的尝试:

x = Restaurant.query.filter_by(Restaurant.restaurant_dish.contains(name)).all()

感谢您的帮助,我也希望有教程可以指导我正确的方向(官方文档对我来说有些困难)。

0