Dado el siguiente modelo, ¿Django guarda en caché los objetos relacionados después de la primera vez que se accede?¿Django guarda en caché los campos ForeignKey y ManyToManyField una vez que se accede a ellos?
class Post(models.Model):
authors = models.ManyToManyField(User)
category = models.ForeignKey(Category)
Por ejemplo:
post = Post.objects.get(id=1)
# as i understand this hits the database
authors1 = post.authors.all()
# does this his the database again?
authors2 = post.authors.all()
# as i understand this hits the database
category1 = post.category
# does this hit the database again?
category2 = post.category
Nota: Actualmente se trabaja con Django 1.3, pero es bueno saber lo que está disponible en otras versiones.
Todavía no del todo bien. Las consultas ManyToMany no se almacenan en caché en absoluto; en realidad, son equivalentes a las búsquedas inversas de FK, por lo que no se almacenan en caché, excepto cuando se utiliza la nueva funcionalidad 'prefetch_related' en 1.4. –
Gracias. Administraré el almacenamiento en caché en los campos de ManyToMany cuando sea necesario. – bpscott
La respuesta debe ser reparada y mejor aún probada. No veo el almacenamiento en caché en ninguno de los casos en DJ 1.5. – Bryce