How would one go about modeling a relationship where one class can be
a child of many classes. For example, let's say I have a lot of
classes like this:

    class Cat(Base):
        __tablename__ = 'cats'
    class Dog(Base):
        __tablename__ = 'dogs'
    class Mouse(Base):
        __tablename__ = 'mice'
    class Bird(Base):
        __tablename__ = 'birds'

Now, I want to tag instances of all those classes, but I want to use
just one class and one table to store the tags. I want to aviod having
CatTag, DogTag, MouseTag classes. I guess I can store the tags in a
table like this:

    tags_table = Table('tags', metadata,
        Column('id', Integer, primary_key=True),
        Column('type', UnicodeText),
        Column('object_id', Integer,
        Column('name', UnicodeText))

where `type` can be one of 'cat', 'dog', 'mouse', etc, and `object_id`
is a foreign key to a coresponding table. Is there a way to model this
with SQLAlchemy's ORM, so that I can simply write:

    tag1, tag2 = Tag(type='dog', name='tag1'), Tag(type='dog',
name='tag2')
    spotty = Dog()
    spotty.tags = [tag1, tag2]

and that SQLAlchemy does the right thing?

Thanks guys...

~ Ryan I.

-- 
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.

Reply via email to