Eu tenho um modelo que representa pinturas que apresento no meu site. Na página principal, eu gostaria de mostrar alguns deles: o mais novo, um que não foi visitado por mais tempo, o mais popular e o aleatório.
Estou usando o Django 1.0.2.
Embora os três primeiros sejam fáceis de usar usando modelos de django, o último (aleatório) me causa alguns problemas. Eu posso ofc codificá-lo na minha opinião, para algo como isto:
number_of_records = models.Painting.objects.count()
random_index = int(random.random()*number_of_records)+1
random_paint = models.Painting.get(pk = random_index)
Não parece algo que eu gostaria de ter - isso faz parte da abstração do banco de dados e deve estar no modelo. Além disso, aqui eu preciso cuidar dos registros removidos (o número de todos os registros não me cobrirá todos os valores-chave possíveis) e provavelmente muitas outras coisas.
Alguma outra opção como eu posso fazer isso, preferencialmente de alguma forma dentro da abstração do modelo?