Django orm get latest para cada grupo

Estoy usando django 1.6 con Mysql

Tengo estos modelos

class Student(models.Model): username = models.CharField(max_length=200,unique = True) class Score(models.Model) student = models.ForeignKey(Student) date = models.DateTimeField() score = models.IntegerField() 

Ahora quiero obtener el último registro de puntuación para cada estudiante.
Yo he tratado

 Score.objects.values('student').annotate(latest_date=Max('date')) 

También he intentado

 Score.objects.values('student__username').annotate(latest_date=Max('date')) 

como se describe en Django ORM – Obtenga el último registro para el grupo, pero no ayudó.

Esto debería funcionar en Django 1.2+ y MySQL:

 Score.objects.annotate( max_date=Max('student__score__date') ).filter( date=F('max_date') ) 

Si su base de datos es postgres, que admite distinct() en el campo, puede probar

 Score.objects.order_by('student__username', '-date').distinct('student__username') 

Creo que esto le daría al alumno y los datos.

 Score.objects.values('student').annotate(latest_date=Max('date')) 

Si desea los registros de Score completos, parece que tendrá que usar una consulta de SQL sin procesar: Filtrar la consulta de Django por el registro con el valor máximo de columna