Thực ra nó không liên quan gì đến bản thân Django mà là với cách hoạt động của MySQL.
Bạn không thể sử dụng bí danh trong điều kiện WHERE, vì đánh giá mệnh đề WHERE đứng trước đánh giá bí danh.
Bạn có thể:
-
Lặp lại mệnh đề:
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''')
-
Thực hiện chọn phụ:
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''')