2012/11/1 Dario Ocles <span dir="ltr"><<a href="mailto:dario.ocles@gmail.com" target="_blank">dario.ocles@gmail.com</a>></span><br><div class="gmail_extra"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">


Buenas gente, tengo el siguiente problema.<div><br></div><div>Tengo este modelo en Django:</div><div><br></div><div><br></div><div>class Padre(models.Model):</div><div>    nombre = models.TextField()</div><div><br></div>

<div>


class Hijo(Padre):</div><div>    edad = models.IntegerField()</div><div><br></div><div>class Hija(Padre):</div><div>    gustos = models.TextField()</div><div><br></div><div><br></div><div>Y hago lo siguiente:</div><div><br>




</div><div>>>> hijo = Hijo(nombre="dario", edad=20)</div><div>>>> hijo.save()</div><div>>>> hija = Hija(nombre="natalia", edad=20)<br></div><div>>>> hija.save()</div>




<div>>>> print Padre.objects.all()<br></div><div>[<Padre: Padre object>, <Padre: Padre object>]<br></div><div><br></div><div><br></div><div>Y yo lo que espero es:</div><div><br></div><div><div>>>> print Padre.objects.all()</div>




<div>[<Hijo: Hijo object>, <Hija: Hija object>]</div></div><div><br></div><div><br></div><div>Entiendo que teniendo el objeto Padre puedo hacer:</div><div><br></div><div>>>> p = Padre.objects.get(nombre='dario')</div>




<div>>>> print p.hijo.edad</div><div>20</div><div><br></div><div>El tema es que tengo que saber que es un Hijo o una Hija.</div><div>Simplemente quiero que me devuelva los objetos correspondientes haciendo consultas sobre Padre.</div>




<div><br></div><div>Se les ocurre una forma elegante de hacerlo? Ya existe algo que haga esto automaticamente?</div><div><br></div><div>Saludo y gracias.</div>
<br></blockquote></div><br></div><div class="gmail_extra">Tenés que usar relaciones en vez de herencia. <div>En tu caso, por ejemplo, una foreign key 'padre' en cada hijo/a.</div><div><a href="https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey" target="_blank">https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey</a><br>

</div><div><br></div><div>Te recomiendo que revises los conceptos de OOP. Tratá de pensar la herencia como "es un" (no siempre siempre se lo usa así, pero es otro tema). </div><div>si hacés class Hijo(Padre), sería incorrecto porque Hijo <no> "es un" Padre.</div>

<div><br></div><div>-</div><div>Roberto</div></div>