En realidad, no tiene nada que ver con Django en sí, sino con la forma en que funciona MySQL.
No puede usar alias en condiciones WHERE, porque la evaluación de la cláusula WHERE precede a la evaluación de alias.
Puedes:
-
Repita la cláusula:
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''')
-
Haz una subselección:
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''')