On Feb 10, 2011, at 4:20 AM, Martijn Moeling wrote:
> Another small thing:
>
> I took a look at:
>
> ForeignKeyConstraint(['invoice_id', 'ref_num'], ['invoice.invoice_id',
> 'invoice.ref_num'])
>
> Now for Polymorphic tables:
>
>
> in baseclass:
>
> baseclass.discriminator happens to be the __tablename__ of the polymorphic
>
> ForeignKeyConstraint('['baseclass.disciminator', baseclass.Id'],
> ['someotherclass.tablename','someotherclass.tableId']
> relationship('someotherclass', backref=baseclass, cascade="all",
> lazy="dynamic")
>
>
> in someotheclass:
>
> tablename = column(Unicode(20), primary_key=True)
> tableId = column(Integer, primary_key=True)
>
> seems Ok to me.
>
> Now I need to make someotherclass work with non-polymorphic tables too!!
>
> anotherclass:
> Id = column(Integer, primary_key=True)
>
> ForeignKeyConstaint('[anotherclass.__tablename__,'anotherclass.Id'],['someotherclass.tablename','someotherclass.tableId'])
> relation('someotherclass', backref=baseclass, cascade="all",
> lazy="dynamic")
>
> Is there any way to get this working without configuring it as polymorphic an
> do no Inhiritance, I do not want each anotherclass record to have a column
> discriminator with its own tablename!
>
> or can I use anotherclass.__tablename__ in the ForeignKeyConstaint?
>
> This has to do with the someotherclass being the "ACL" I talked about in a
> previous post if that gives extra info. I am trying to implement the
> MapperExtension.before_append where I need to refer to the "ACL" records in a
> way like:
>
> for A in instance.ACL:
> .....
yeah, sorry, this use case continues to be 98% opaque to me. I don't
understand what you mean by "make someotherclass work with non-polymorphic
tables", a class is mapped in just one way, either with or without a
discriminator column. A single class can't be mapped in both ways. If
there's no discriminator, there's just one class that can be used for returned
rows.
If you could create a small test that illustrates a mapping and an expected
result, perhaps I can attempt to find a way to get the ORM behavior you're
looking for.
Your mapper extension would continue to be used normally with a "dynamic"
relationship since it uses query(cls) just like a regular query.
--
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.