Het heeft eigenlijk niets met Django zelf te maken, maar met de manier waarop MySQL werkt.
U kunt geen aliassen gebruiken in WHERE-voorwaarden, omdat de evaluatie van de WHERE-component voorafgaat aan de evaluatie van de aliassen.
U kunt ofwel:
-
Herhaal de clausule:
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''')
-
Maak een subselectie:
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''')