aryndin
aryndin

Reputation: 591

Attribute filtering by comparing cause errors

Model:

class Thing(db.Model):
    __tablename__ = 'things'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(128))
    type_id = db.Column(db.Integer, db.ForeignKey('types_of_things.id'))

class TypeOfThing(db.Model):
    __tablename__ = 'types_of_things'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64))
    number = db.Column(db.Integer)
    things = db.relationship('Thing', backref='type', lazy='dynamic')

Try:

Thing.query.join(TypeOfThing).filter_by(Thing.type.number<=1).first()

cause:

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with Thing.type has an attribute 'number'

Try:

Thing.query.join(TypeOfThing).filter_by(number<=1).first()

Cause:

NameError: name 'number' is not defined

Upvotes: 1

Views: 51

Answers (1)

aryndin
aryndin

Reputation: 591

Seems like I need do it so:

Thing.query.join(TypeOfThing).filter(TypeOfThing.number<=1).first()

Upvotes: 1

Related Questions