Hello,

Paul Johnston a écrit :
> Hi,
>
> I'm trying to create a relation like this
>
> Testing [1] -> [many] Target (where target.is_testtgt==0)
>
> i.e. I want to map only to Target rows that match the where condition.
>
> Now, this is easy enough using assign_mapper:
>
> assign_mapper(ctx, Testing, testing, properties={ 'targets': 
> relation(Target,
>     primaryjoin=((target.c.testingid==testing.c.id) & 
> (target.c.is_testtgt != 1))) } )
>
> However, I'm using ActiveMapper. I can't do the same, as the relation 
> needs to use Testing.c.id <http://Testing.c.id>, and at that point 
> Testing isn't defined, causing this to error:
>
> target          = one_to_many('Target', colname='testingid', 
> backref='testing', primary_join=(( Testing.c.id==Target.c.testingid) & 
> (Target.c.is_testtgt != 1)))
>
> So, I thought I'd add the relation later on. Again, this is easy with 
> assign_mapper:
>
> mp.properties['target'] = relation(Target,
>     primaryjoin=((Target.c.testingid == Testing.c.id 
> <http://Testing.c.id>) & (Target.c.is_testtgt != 1)) )
>
> And that works fine. I thought to do the equivalent with ActiveMapper:
>
> class_mapper(Testing).properties = {'target': relation(Target,
>     primaryjoin=((Target.c.testingid == Testing.c.id 
> <http://Testing.c.id>) & (Target.c.is_testtgt != 1)) ) }
>
Have you tried :
Testing.mapper.add_property('target', relation(Target, primary....))
(of course after having defined the Testing and Target classes...)
> But then "Testing.get(1234).targets" gives an AttributeError.
>
> So, is there any way to achieve this using ActiveMapper? Any help 
> appreciated.
>
> Paul
>
> >

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to