Cela n'a en fait rien à voir avec Django lui-même, mais avec la façon dont MySQL fonctionne.
Vous ne pouvez pas utiliser d'alias dans les conditions WHERE, car l'évaluation de la clause WHERE précède l'évaluation des alias.
Vous pouvez soit :
-
Répétez la clause :
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''')
-
Effectuez une sous-sélection :
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''')