Hello,

I have an existing CMS-like application which uses joined table
inheritance at its core. Basically I have a base class Content from
which all other classes (Folder, Document, Event, File, ...) inherit.=20
It works wonderfully well. This is my (Postgre)SQL schema if you are=20
interested:=20
https://gist.githubusercontent.com/silenius/2e0f69fadfde9877e32c5b778efd39a=
f/raw/f08e2af2f7cd239c865777d1e54342ee53608520/sa.sql

Now we'd like to support multiple languages. We plan to add an=20
additional table for each inherited class (additional translation=20
table approach), so basically we'll have something like:

content_type
   |
   |
content --- content_translation
   |
   |
document --- document_translation

Currently I have a polymorphic_on=3Dtables.content.c.content_type_id on=20
the base mapper (Content) and polymorphic_identity=3Dget_type_id(config,
'some_content_type_name') for each inherited mapper (the get_type_id
function simply return the content_type ID:
https://gist.github.com/silenius/25b8f46192b5b9b23477fe0c541bd9f3 )

As the application is quite large I'd like to avoid having to refactor a
lot of code.

I wondered what would be the best SQLAlchemy approach to do this?

For example let's say I have something like this in my application:
session.query(Document).all() which SQLAlchemy translates as:

SELECT ..  FROM content=20
JOIN document ON content.id =3D document.content_id

Is there some mapper configuration that I could change so that it
translates now as:

SELECT .. FROM content=20
JOIN content_translation=20
    ON content.id =3D content_translation.content_id=20
    AND content_translation.lang =3D 'some_language_code'=20
JOIN document ON document.content_id =3D content.id=20
JOIN document_translation=20
    ON document_translation.document_id =3D document.content_id=20
    AND document_translation.lang =3D 'some_language_code'

If not, what would be the best approach?

Thanks !


-- 
Julien Cigar
Belgian Biodiversity Platform (http://www.biodiversity.be)
PGP fingerprint: EEF9 F697 4B68 D275 7B11  6A25 B2BB 3710 A204 23C0
No trees were killed in the creation of this message.
However, many electrons were terribly inconvenienced.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Attachment: signature.asc
Description: PGP signature

Reply via email to