On Thu, Mar 22, 2018 at 10:58:56AM +0100, Julien Cigar wrote:
> On Tue, Mar 20, 2018 at 08:32:14PM -0400, Mike Bayer wrote:
> > I think it would be a lot easier to have the corresponding translation
> > linked off using relationship().   can you work with that?
> 

Hello Mike,

I tried with relationships, but I'm not too satisfied with the generated
SQL, which makes me belived that I'm doing something wrong..

I've GIST the relevant parts of my mappers and the generated SQL at
https://gist.github.com/silenius/0fedf2bcb92b7e5c6f27732678c5baa0

I'm wondering if overriding the 'translations' relationship as I do is
the correct approach ..? In theory the "ContentTranslation" should be
somewhat "dynamic", but I wonder if SQLAlchemy supports something like
this .. ? By "dynamic" I mean it should be DocumentTranslation, or
EventTranslation, ... regarding of the polymorphic_identity of the "other
side" of the relationship

Thanks !

Julien

> I could .. :) I'll make some "helper functions" or maybe a custom Query
> object, with maybe some proxy-like properties too
> 
> Thanks
> 
> > 
> > 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.
> 
> -- 
> 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.



-- 
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.

Attachment: signature.asc
Description: PGP signature

Reply via email to