実際には、Django自体とは関係ありませんが、MySQLの動作方法とは関係があります。
WHERE句の評価がエイリアスの評価に先行するため、WHERE条件でエイリアスを使用することはできません。
次のいずれかを実行できます:
-
条項を繰り返します:
Company.objects.raw('''SELECT *,core_location.a + core_location.b as dist FROM core_location,core_company WHERE (core_location.a + core_location.b)<10 ORDER BY dist''')
-
副選択を行う:
Company.objects.raw('''SELECT * FROM ( SELECT *,core_location.a + core_location.b as dist FROM core_location,core_company ) as subselect WHERE dist<10 ORDER BY dist''')