Imagine el siguiente modelo:A left outer reverse select_related in Django?
class Parent(Model):
...
class Child(Model)
father = ForeignKey(Parent)
...
Algunos padres tienen hijos, otros no lo hacen (que no son los padres en el sentido real, es sólo un nombre ficticio).
me gustaría hacer la siguiente consulta: Quiero que todos los padres , y si tienen hijos, me traen los niños también. Ese sería el equivalente de una combinación externa izquierda a Mesa de niño, es decir:
select * from app_parent left join app_child on child_father_id=parent_id
De esta manera, cuando invocan Parent.child_set en mi plantilla, no llegará a la base de datos de un millón de veces. ¿Hay una manera de hacer eso? Gracias
Decidí que no debería usar este enfoque; realmente no hay soporte. Parecería que el mejor enfoque es seleccionar de la tabla más pequeña y luego, si es necesario, usar el templatetag "reagrupar" o la función set() en los campos principales, dependiendo del caso. –
Una desventaja del enfoque de reagrupamiento es que no obtendrá Padres que no están allí – babonk