[pyar] Django: consultas a modelo con subclases

Juan BC jbc.develop en gmail.com
Jue Dic 16 15:57:53 ART 2010


El 16/12/10 15:47, Fernando Gómez escribió:
> Esteban Ordano dijo:
>
>>> Hola Fernando:
>>>
>>> Algo que podés hacer es una consulta al modelo AccessPoint y para cada
>>> resultado fijarte el valor de __class__.
>>>
>>> for entry in AccessPoint.objects.filter(condition):
>>>     if entry.__class__ == VariantAccessPoint:
>>>         pass
>
> Gracias, pero el __class__ me devuelve la clase AccessPoint, ya que
> ése es el modelo donde estoy creando el QuerySet. Nada sabe __class__
> sobre las subclases.
>
>
> Daniel Moisset dijo:
>
>> Eso no anda.... es un caso de uso conocido, lo que hay que hacer es
>> ver si se puede consultar entr.variantaccesspoint, que tira una
>> excepcion a menos que agarres la clase correcta.
>
> Efectivamente, consultando la existencia de ese atributo puedo
> identificar la subclase! Luego tendré que entender bien por qué
> funciona así.
>
>> Hay un par de snippets dando vuelta en googel con managers que te
>> ayudan a mejorar esto
>
> Gracias por el dato. Supongo que te referís a algo como esto:
>
>    - Model inheritance with content type and inheritance-aware manager
>      http://djangosnippets.org/snippets/1034/
>
>    - Model inheritance with content type
>      http://djangosnippets.org/snippets/1031/
>
> De esa manera, no sólo averiguo a qué subclase está asociado el
> objeto, sino que además puedo recrear el objeto como instancia de la
> subclase correcta. (Claro que eso tendrá su costo...)
>
> Habrá que seguir explorando, ver qué es eso de los contenttypes...
> Gracias nuevamente.
>
> Saludos.
>
CREO que Fede Heinz hizo un snippet para esto justamente (corregime si 
me equivoco fede)



More information about the pyar mailing list