Ver Mensaje Individual
  #1 (permalink)  
Antiguo 07/02/2014, 12:03
Avatar de stormearth
stormearth
 
Fecha de Ingreso: octubre-2013
Ubicación: Quito
Mensajes: 68
Antigüedad: 10 años, 6 meses
Puntos: 2
obtener objectos random de un queryset

Hola todos. ¿Cuál es la mejor manera de obtener objetos aleatoreamente de un queryset?.

en mi caso este es mi queryset:
Código:
pp = Posts.objects.order_by('-votos_positivos')[:7]
posts_populares = [ ]
Y lo que quiero es llenar la lista posts_populares aleatoreamente con objetos del queryset.
(o encontrar una manera de pasar una lista aleatoria de los Posts del queryset al template)
ya traté random.shuffle[pp] .. pero un queryset no acepta random.shuffle,
también traté lo siguiente:
Código:
for i in range(3):
		n = pp.pop(random.randint(0,len(pp)))
		posts_populares.append(n)
Esperando llenar la lista posts_populares con 3 objectos del queryset. Pero tampo acepta pop el queryset.
Traté otras cosas.. pero no lo he logrado. Hay que tomar en cuenta que la lista no puede tener objetos repetidos del queryset, por eso quería usar pop().

Se me ocurre que puedo hacer 3 querysets diferentes y que cada uno apunte a un objeto de la base de datos, y luego poner los 3 objetos en una lista, pero ¿Esto no significaría entrar a la base de datos 3 veces, cuando lo ideal sería entrar solo 1 vez?