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 sqlalchemy@googlegroups.com.
To unsubscribe from this group, send email to 
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en.

Reply via email to