I have a similar use case, and aside from introducing a duplicate "non-lazy"
relationship to back the association_proxy, I haven't found a solution.
Does anyone have a more elegant approach?
On Saturday, February 11, 2012 12:15:38 PM UTC-8, Mark Friedenbach wrote:
>
> Hi,
>
> Is it possible to have an association_proxy (in the association object
> pattern) that emulates a set-based collection if it goes through a
> lazy='dynamic' relationship? I can't for the life of me find a way to
> make this work (setting collection_class on the dynamic relationship
> doesn't seem to do anything).
>
> Here's some example code of what I'm trying to do, extracted from the
> actual project:
>
> class ProofOfWork(object):
> blocks = association_proxy('Intermediatory_nodes', 'block')
> proof_of_work = Table('proof_of_work', db.metadata)
> mapper(ProofOfWork, proof_of_work, properties={
> 'Intermediatory_nodes': relationship(lambda: Intermediatory,
> lazy = 'dynamic'),
> })
>
> class Block(object):
> proof_of_works = association_proxy('Intermediatory_nodes',
> 'proof_of_work')
> block = Table('block', db.metadata)
> mapper(Block, block, properties={
> 'Intermediatory_nodes': relationship(lambda: Intermediatory,
> lazy = 'dynamic'),
> })
>
> class Intermediatory(object):
> pass
> intermediatory = Table('intermediatory', db.metadata,
> Column('proof_of_work_id', Integer,
> ForeignKey('proof_of_work.id'),
> nullable = False),
> Column('block_id', Integer,
> ForeignKey('block.id')),
> )
> mapper(Intermediatory, intermediatory, properties={
> 'proof_of_work': relationship(lambda: ProofOfWork,
> back_populates = 'Intermediatory_nodes',
> remote_side = lambda: proof_of_work.c.id),
> 'block': relationship(lambda: Block,
> back_populates = 'Intermediatory_nodes',
> remote_side = lambda: block.c.id),
> })
>
> How can I make ProofOfWork.blocks and Block.proof_of_works return an
> _AssociationSet instead of _AssociationList?
>
> Cheers,
> Mark
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To view this discussion on the web visit
https://groups.google.com/d/msg/sqlalchemy/-/gs9rqWLKooQJ.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.