別のモデル「契約」と1対多の関係を持つモデル「市場」があります。
class Market(models.Model):
name = ...
...
class Contract(models.Model):
name= ...
market = models.ForeignKey(Market, ...)
current_price = ...
Market オブジェクトを、それぞれの最大価格のコントラクトと共に取得したいと考えています。これは、生のSQLを介して行う方法です。
SELECT M.id as market_id, M.name as market_name, C.name as contract_name, C.price
as price from pm_core_market M INNER JOIN
(SELECT market_id, id, name, MAX(current_price) as price
FROM pm_core_contract GROUP BY market_id) AS C
ON M.id = C.market_id
SQLを使わずにこれを実装する方法はありますか? ある場合、パフォーマンスの観点からどちらを優先する必要がありますか?