In realtà non ha nulla a che fare con Django stesso, ma con il modo in cui funziona MySQL.
Non è possibile utilizzare gli alias nelle condizioni WHERE, perché la valutazione della clausola WHERE precede la valutazione degli alias.
Puoi:
-
Ripeti la clausola:
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''')
-
Fai una sottoselezione:
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''')