I\'m wondering if there are any limitations on syntax of raw() method when using calculated fields. Here is a quick example:
Company.objects.raw(\'\'\'SELECT
It actually has nothing to do with Django itself, but with the way MySQL works.
You can't use aliases in WHERE conditions, because WHERE clause evaluation precedes the aliases evaluation.
You can either:
Repeat the 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''')
Do a subselect:
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''')