<div class="gmail_quote">El 16 de noviembre de 2011 16:13, Tordek <span dir="ltr"><<a href="mailto:kedrot@gmail.com">kedrot@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hasta ahora la mejor solución que se me ocurrió es buscar los IDs<br>
llamando directamente a la DB, y después hacer<br>
<br>
novedades = Articulos.objetos.select_related().filter(pk__in=ids)<br>
<br>
que al menos es 2 queries en vez de 9.<br><br></blockquote><div><br></div><div>Otra es agregar un models.ForeignKey a Articulo en Colección que apunte al último artículo agregado (le voy a poner ultimo_articulo), overridear el save the Artículo para que cuando se crea una instancia se guarde como ultimo_articulo en Colección:</div>
<div><div><br></div><div>class Articulo(models.Model):</div><div>    ...</div><div><br></div><div>    def save(self, *args, **kwargs):</div><div>        created = <a href="http://self.pk">self.pk</a> is None</div><div>        super(Articulo, self).save(*args, **kwargs)</div>
<div>        if created:</div><div>            self.coleccion.ultimo_articulo = self</div><div>            self.coleccion.save()</div></div><div><br></div><div>Después podrías tener algo así[0]: Articulo.objects.select_related().filter(pk=F('coleccion__ultimo_articulo__pk'))  </div>
</div><div><br></div><div>Si tu drama es la velocidad y cantidad de queries a esto le pongo unos porotos.</div><div><br></div><div>[0] <a href="https://docs.djangoproject.com/en/dev/topics/db/queries/#filters-can-reference-fields-on-the-model">https://docs.djangoproject.com/en/dev/topics/db/queries/#filters-can-reference-fields-on-the-model</a></div>
<div><br></div><div><br></div><div>Saludos,</div>Fabián E. Gallina<br><br>