Flacon de SQLAlchemy filtrer les enregistrements à partir de la relation de clé étrangère
J'ai 2 modèles:
class Scenario(db.Model):
__tablename__ = 'scenarios'
scenario_id = db.Column(db.Integer, primary_key=True)
scenario_name = db.Column(db.String(120))
scenario_text = db.Column(db.Text)
hints = db.relationship('Hint', backref='scenario', lazy='dynamic')
def __init__(self, scenario_name, scenario_text):
self.scenario_name = scenario_name
self.scenario_text = scenario_text
def __repr__(self):
return "<Scenario(scenario_name='%s', scenario_text='%s', hints='%s')>" % self.scenario_name, self.scenario_text, self.hints
class Hint(db.Model):
__tablename__ = 'hints'
hint_id = db.Column(db.Integer, primary_key=True)
scenario_id = db.Column(db.Integer, db.ForeignKey('scenarios.scenario_id'))
hint = db.Column(db.Text)
release_time = db.Column(db.Integer)
def __init__(self, scenario_id, hint, release_time):
self.scenario_id = scenario_id
self.hint = hint
self.release_time = release_time
def __repr__(self):
return "<Hint(scenario_id='%s', hint='%s', release_time='%s')>" % self.scenario_id, self.hint, self.release_time
Je veux être en mesure d'obtenir tous les scénarios avec leurs conseils, mais seulement les trucs qui ont un release_time inférieure à l'heure actuelle.
J'ai pensé que ce serait le travail:
scenarios = Scenario.query.filter(Scenario.hints.release_time < time.time())
Mais j'obtiens cette erreur:
AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Scenario.hints has an attribute 'release_time'
J'ai juste commencé à jouer avec Flacon et SQLAlchemy. Tout conseil serait apprécié.
Vous devez vous connecter pour publier un commentaire.
Scenario.hints
est une requête, de sorte que vous aurez besoin d'utiliser une jointure pour effectuer ce type de filtrage.Voir le requête docs et la ORM tutoriel pour plus de détails.
Hint.query.all()
vous donner?