Eu implementei uma correção para INNER JOIN para Django ORM, ele usará STRAIGHT_JOIN no caso de pedidos com INNER JOINs. Falei com os desenvolvedores principais do Django e decidimos fazer isso como um backend separado por enquanto. Então você pode conferir aqui:https://pypi.python.org/pypi /django-mysql-fix
No entanto, há uma outra solução alternativa. Use um trecho da resposta de James, mas substitua select_related por:
qs = qs.select_related('').prefetch_related('wheel', 'dealer', 'category')
Ele cancelará o INNER JOIN e usará 4 consultas separadas:1 para buscar carros e 3 outras com
car_id
DENTRO (...). ATUALIZAÇÃO: Encontrei mais uma solução. Depois de especificar null=True em seu campo ForeignKey, o Django usará LEFT OUTER JOINs em vez de INNER JOIN. LEFT OUTER JOIN funciona sem problemas de desempenho neste caso, mas você pode enfrentar outros problemas que ainda não conheço.