He estado babeando sobre Django todo el día mientras codificaba un sitio web interno en un tiempo récord, pero ahora me doy cuenta de que algo es muy ineficiente con mis ForeignKeys en el modelo.Muchas consultas de los campos django foreignkey
Tengo un modelo que tiene 6 ForeignKeys, que son básicamente tablas de búsqueda. Cuando consulto todos los objetos y los visualizo en una plantilla, se ejecutan alrededor de 10 consultas por artículo. Aquí hay un código, que debería explicarlo mejor:
class Website(models.Model):
domain_name = models.CharField(max_length=100)
registrant = models.ForeignKey('Registrant')
account = models.ForeignKey('Account')
registrar = models.ForeignKey('Registrar')
server = models.ForeignKey('Server', related_name='server')
host = models.ForeignKey('Host')
target_server = models.ForeignKey('Server', related_name='target')
class Registrant(models.Model):
name = models.CharField(max_length=100)
... y 5 tablas más simples. Hay 155 registros del sitio web, y en la vista que estoy usando:
Website.objects.all()
Termina ejecutando 1544 consultas. En la plantilla, estoy usando todos los campos extranjeros, como en:
<span class="value">Registrant:</span> <a href="/filter/registrant/{{ website.registrant.id }}">{{ website.registrant.name }}</a><br />
así que sé que va a ejecutar una gran cantidad de consultas ... pero parece que esto es excesivo. ¿Esto es normal? ¿No debería hacerlo de esta manera?
Soy bastante nuevo para Django, así que espero estar haciendo algo estúpido. Definitivamente es un marco bastante sorprendente.
¡Gracias! Eso definitivamente tiene mucho sentido para tener esa función. Ahora está ejecutando 9 consultas. Como las tablas son pequeñas, no me importa que estén cargando todos los datos (y obviamente es mucho mejor). –