On Thu, 2008-05-15 at 12:27 -0400, Michael Bayer wrote:
>
> On May 15, 2008, at 12:12 PM, J. Cliff Dyer wrote:
>
> >
> >
> > How can I use this field for polymorphism? Is it possible?
>
>
> polymorphic discriminators are currently table-local scalar columns.
> So if you had a many-to-one of discriminators, youd currently have to
> encode the discriminator to the primary key identifier of each
> discriminotor. We will eventually allow a python function to be used
> as a discriminator as well which you can use to add a level of
> abstraction to this (you'd preload the list of discriminiator objects
> and again map based on primary key).
>
> But a straight load of an entity relying upon an inline JOIN to get
> the polymorphic discriminator in all cases, automatically by SA, is
> not going to happen - its inefficient and would be very complex to
> implement.
>
Thanks. That makes sense. I guess if you can pull across a foreign
key, you can pull across any arbitrary query.
My goal was to have the code self-documenting in this respect, and I've
achieved that by creating a helper function get_type_id(type_name), so
each polymorphic child of Item now has
{'polymorphic_identity': get_type_id(u'Article')}
{'polymorphic_identity': get_type_id(u'Illustration')}
{'polymorphic_identity': get_type_id(u'Map')}
and so on. It seems to be working so far.
Thanks,
Cliff
> >
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
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
-~----------~----~----~----~------~----~------~--~---