0

私が次のものを持っているとしましょう:

association_table = Table('things_stuffs', Base.metadata,
    autoload=True,
    extend_existing=True)

class Thing(Base):
    __tablename__ = 'things'
    __table_args__ = {'autoload': True}

class Stuff(Base):
    __tablename__ = 'stuffs'
    __table_args__ = (
        {'autoload': True}
        )
    things = relationship(Thing,
                secondary=association_table,
                backref=backref("stuffs", uselist=False, lazy='dynamic'))

ここで、 Stuff インスタンスからすべてのものを取得したい場合は、次のようにします。

a_stuff_instance.things.filter().all()

そして、そのlazy="dynamic"部分のためにそれを照会します。しかし、反対側は機能しません。やりたいなら

a_thing_instance.stuffs.filter().all()

私は得るAttributeError: 'InstrumentedList' object has no attribute 'filter'。私は何をすべきか?

4

1 に答える 1

3

dynamic反対側にも追加するだけです:

things = relationship(Thing,
            secondary=association_table,
            lazy='dynamic', # *** @note: new parameter ***
            backref=backref("stuffs", uselist=False, lazy='dynamic'))
于 2012-12-07T10:16:06.560 に答える