I think it would be a lot easier to have the corresponding translation
linked off using relationship().   can you work with that?

On Tue, Mar 20, 2018 at 9:19 AM, Julien Cigar <julien.ci...@gmail.com> wrote:
> 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 sqlalchemy+unsubscr...@googlegroups.com.
> To post to this group, send email to sqlalchemy@googlegroups.com.
> Visit this group at https://groups.google.com/group/sqlalchemy.
> For more options, visit https://groups.google.com/d/optout.

-- 
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 sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to