El título lo dice todo.
Echemos un vistazo a este código, por ejemplo:
objs = Model.objects.prefetch_related('model2').filter() objs.first().model2_set.first().field vs objs = Model.objects.filter().prefetch_related('model2') objs.first().model2_set.first().field Cuando se usa prefetch_related() primero, ¿Dango obtiene todas las relaciones ManyToOne / ManyToMany sin tener en cuenta .filter() y después de obtener todo, se aplica el filtro?
En mi opinión, eso no importa ya que todavía hay una consulta ejecutada al final.
Gracias por adelantado.
No importa dónde especifique prefetch_related siempre que sea antes de que se obtengan los registros. Personalmente pongo cosas como prefetch_related , select_related . y only al final de la cadena, pero eso me parece más expresivo desde la perspectiva de la legibilidad del código.
Pero eso no es cierto para todos los métodos de gestión. Algunos métodos tienen diferentes efectos según su posición en la cadena, por ejemplo, order_by puede tener un significado posicional cuando se usa con distinct (agrupar por).