Я считаю, что вам нужно сгруппировать по имени, а затем выбрать по каждой группе.Никогда не использовал это сам, но этот вопрос может дать некоторое представление о том, как это сделать.
Обновление : кажется, я правильно понял код, но хотя онработать для вашего конкретного случая Я пока не знаю, как получить другие поля в том же запросе (предположим, что вы хотели не только номера версий, но и другие вещи - это решение не будет работать):
from django.db.models import Max
MyModel.objects.values('name').annotate(Max('version'))
# Will return something like:
# [{'name':'a', 'version__max':3}, {'name':'b', 'version__max':2}, ...]
Если вы используете Django 1.4 и PostgreSQL, вы можете сделать это, используя отличный метод:
MyModel.objects.order_by('name', '-version').distinct('name')