SqlAlchemy et Flacon, comment interroger plusieurs-à-plusieurs relations
J'ai besoin d'aide pour créer SqlAlchemy requête.
Je suis en train de faire un Flacon projet pour lequel je suis à l'aide de SqlAlchemy. J'ai créé 3 tables: Restaurant, des plats et des restaurant_dish dans mon models.py fichier.
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)
J'ai ajouté des données à la restaurant_dish table et il devrait fonctionner correctement. Où j'ai besoin d'aide c'est de comprendre comment obtenez correctement un Plat à l'aide de Restaurant. SQL brut serait quelque chose comme ceci:
SELECT dish_id FROM restaurant_dish WHERE restaurant_id == id
Ce que j'ai réussi à faire, mais ne fonctionne pas:
x = Restaurant.query.filter_by(Restaurant.restaurant_dish.contains(name)).all()
Merci pour l'aide et j'apprécie aussi les tutoriels qui peut me pointer dans la bonne direction(la documentation officielle va au-dessus de ma tête).
Vous devez vous connecter pour publier un commentaire.
La sémantique de la relation ne pas regarder à droite. Je pense qu'il devrait être quelque chose comme:
Ensuite, pour récupérer tous les plats d'un restaurant, vous pouvez le faire:
Cela devrait générer une requête comme:
Dish.restaurant.any
était exactement ce que je cherchais! +1 pour vous!Dish.restaurants.any(thisrestaurant)
quand thisrestaurant est un Restaurant intance? Je pouvais àDish.restaurants.any(id=thisrestaurant.id)
, mais il semble un peu difficile