Es hat eigentlich nichts mit Django selbst zu tun, sondern mit der Arbeitsweise von MySQL.
Sie können keine Aliase in WHERE-Bedingungen verwenden, da die Auswertung der WHERE-Klausel der Auswertung der Aliase vorausgeht.
Sie können entweder:
-
Wiederholen Sie die Klausel:
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''')
-
Führen Sie eine Unterauswahl durch:
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''')