tengo 2 modelos en mi código de Django:obtener objetos de clave externa en una sola consulta - Django
class ModelA(models.Model):
name = models.CharField(max_length=255)
description = models.CharField(max_length=255)
created_by = models.ForeignKey(User)
class ModelB(models.Model):
category = models.CharField(max_length=255)
modela_link = models.ForeignKey(ModelA, 'modelb_link')
functions = models.CharField(max_length=255)
created_by = models.ForeignKey(User)
Say ModelA tiene 100 registros, todos los cuales pueden o no tener enlaces a ModelB
ahora digo que quiero obtener una lista de todos los registros ModelA junto con los datos de ModelB
que haría:
list_a = ModelA.objects.all()
Luego de obtener los datos para ModelB que tendría que hacer
for i in list_a:
i.additional_data = i.modelb_link.all()
Sin embargo, este ejecuta una consulta en cada caso de i. Por lo tanto, hacer 101 consultas para ejecutar.
¿Hay alguna manera de ejecutar todo esto en solo 1 consulta. O al menos menos de las 101 consultas.
He intentado poner en ModelA.objects.select_related().all()
pero esto no pareció tener ningún efecto.
Gracias
Sé que al usar sql sin procesar no se devuelve un objeto, así que conoces alguna forma de convertir los resultados en un objeto de Django – John