I wanted to do something like this in the past, and in the end, rather
than using polymorphic mappers it made more sense to create a
MapperExtension which overrides create_instance. In create_instance you
can examine your 'typ' column to decide what class to create, selecting
one of your Manager/Demigod classes if necessary, or falling back to the
Person class otherwise.
Hope that helps,
Simon
________________________________
From: [email protected]
[mailto:[EMAIL PROTECTED] On Behalf Of Rick Morrison
Sent: 06 March 2007 01:12
To: sqlalchemy
Subject: [sqlalchemy] Polymorphic collections / ticket #500
The fix for ticket #500 breaks a pattern I've been using.
It's most likely an anti-pattern, but I don't see a way to get
what I want in SA otherwise.
I've got a series of "entities"
class Person():
pass
class Manager(Person):
def __init__(self):
# do manager stuff
class Demigod(Person):
def __init__(self):
# do demigod stuff
etc.
there are mappers for each of these entities that inherit from
Person(), so all of the normal Person() properties exist, but Person()
itself is not polymorphic. That's on purpose, and because the class
hierarchy of Manager(), etc, is not exhaustive, and I occasionally want
to save instances of Person() directly.
If I make the Person() class polymorphic on a column of say
"typ", then SA clears whatever "typ" I may have tried to set directly,
and seems to make me specify an exhaustive list of sub-types.
And so I leave Person() as non-polymorphic. I also have a
collection of Person() objects on a different mapper, which can load
entity objects of any type.
Before rev #2382, I could put a Manager() in a Person()
collection, and it would flush OK. Now it bitches that it wants a real
polymorphic mapper. I don't want to use a polymorphic mapper, because I
don't want to specify an exhaustive list of every class that I'm ever
going to use.
What to do?
Thanks,
Rick
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---