Django 1.1 (в настоящее время бета) добавляет агрегацию поддержку API базы данных. Ваш запрос можно сделать так:
from django.db.models import Max, F
Contract.objects.annotate(max_price=Max('market__contract__current_price')).filter(current_price=F('max_price')).select_related()
Это генерирует следующий запрос SQL:
SELECT contract.id, contract.name, contract.market_id, contract.current_price, MAX(T3.current_price) AS max_price, market.id, market.name
FROM contract LEFT OUTER JOIN market ON (contract.market_id = market.id) LEFT OUTER JOIN contract T3 ON (market.id = T3.market_id)
GROUP BY contract.id, contract.name, contract.market_id, contract.current_price, market.id, market.name
HAVING contract.current_price = MAX(T3.current_price)
API использует дополнительное объединение вместо подзапроса (как ваш запрос). Трудно сказать, какой запрос быстрее, особенно без знания системы баз данных. Я предлагаю вам сделать несколько тестов и принять решение.