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.