22
我需要帮助创建SqlAlchemy查询。SqlAlchemy和Flask,如何查询多对多关系
我正在做一个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表中,并且它应该正常工作。我需要帮助的是了解如何正确使用餐厅的菜。原始SQL会是这样的:
SELECT dish_id FROM restaurant_dish WHERE restaurant_id == id
我已经成功地得到完成,但不工作:
x = Restaurant.query.filter_by(Restaurant.restaurant_dish.contains(name)).all()
感谢您的帮助,我也很欣赏教程,可以点我在正确的方向(官方文件覆盖了我的头)。
谢谢。这是做到这一点的正确方法。 :) – cancerballs
搜索了几个小时之后,'Dish.restaurant.any'正是我正在寻找的东西! +1给你! – Matthew
这个答案比任何文档都要好。 – user455318