[pyar] Django: consultas a modelo con subclases

Fernando Gómez fjgomez en gmail.com
Jue Dic 16 15:47:28 ART 2010


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.

-- 
Fernando Gómez
Biblioteca "Antonio Monteiro"
INMABB (Conicet / Universidad Nacional del Sur)
Av. Alem 1253
B8000CPB Bahía Blanca, Argentina
Tel. +54 (291) 459 5116
http://inmabb.criba.edu.ar/



More information about the pyar mailing list