Tengo un modelo que representa pinturas que presento en mi sitio. En la página web principal me gustaría mostrar algunos de ellos: el más nuevo, uno que no fue visitado por la mayoría del tiempo, el más popular y uno aleatorio.
Estoy usando Django 1.0.2.
Si bien los primeros 3 de ellos son fáciles de extraer utilizando modelos django, el último (aleatorio) me causa algunos problemas. Desde mi punto de vista puedo codificarlo en algo como esto:
number_of_records = models.Painting.objects.count()
random_index = int(random.random()*number_of_records)+1
random_paint = models.Painting.get(pk = random_index)
No parece algo que me gustaría tener en mi opinión, esto es completamente parte de la abstracción de la base de datos y debería estar en el modelo. Además, aquí necesito cuidar los registros eliminados (entonces el número de todos los registros no me cubrirá todos los valores clave posibles) y probablemente muchas otras cosas.
¿Alguna otra opción para hacerlo, preferiblemente de alguna manera dentro de la abstracción del modelo?