[pyar] Django: Relacion basada en multiples campos

Nicolas Rebagliati nicolas.rebagliati en aenima-x.com.ar
Mie Ene 7 22:34:37 ART 2015


2015-01-07 19:50 GMT-03:00 Luis Masuelli <luismasuelli en hotmail.com>:

> El tema es que los campos de FK en Django solo bancan un campo, y no
> multiples. Entonces no vas a tener un handler que sea un atributo solo; no
> de forma nativa. IMHO es una limitación del concepto de los ORM como tal,
> más que un problema de Django (es decir: con SQLAlchemy y con Hibernate no
> veo que puedas solucionarlo - aunq tal vez me equivoque xq no uso
> SQLAlchemy hace un año e hibernate hace casi 2).
>
> Normalmente un esquema en ORM, que proviene de una base de datos (o en el
> caso de Django suele generar dicha base de datos), hace que cada atributo
> se genere contra un único campo (así, los FKs se generan contra un único
> campo en la BD). Pero esto no siempre es así: el caso del GenericForeignKey
> te genera un solo atributo en el objeto, pero para establecer la referencia
> usa DOS campos (dichos campos TAMBIEN deben declararse dentro del modelo).
> En este sentido, el GenericForeignKey es lo que realmente se usa al momento
> de acceder a los datos PERO:
>
>
>    - En la base de datos subyacente, no existe ningun campo creado por
>    este atributo GenericForeignKey.
>    - Se requiere que en el modelo declares OTROS DOS CAMPOS a partir de
>    los cuales el GenericForeignKey debe valerse para acceder a los datos.
>    - Se requiere que cuando filtres e insertes, uses los campos
>    subyacentes y NUNCA el campo que declaraste como GFK porque dicho campo no
>    existe en la bd por propia forma.
>
>
> En este sentido, podrías basarte en dicha idea para hacer tu Manager
> personalizado (GenericForeignKey se basa en otros dos campos, y no genera
> ninguno por cuenta propia; vos deberias declarar esos dos campos T2 y T3
> como venis haciendo, y crearte un manager personalizado para que, atraves
> de esos 2 campos, puedas acceder a los objetos en la otra tabla como estás
> acostumbrado: con un solo atributo).
>
> Así como tal es medio como brujería, pero es una de las limitaciones de
> diseño que tienen los ORM.
>
>
Ok Gracias por la data.
Por suerte no necesito insertar, solo consultar.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20150107/51b678d9/attachment-0001.html>


More information about the pyar mailing list