Wdrożyłem poprawkę dla INNER JOIN dla Django ORM, będzie używał STRAIGHT_JOIN w przypadku zamawiania z INNER JOIN. Rozmawiałem z głównymi programistami Django i postanowiliśmy na razie zrobić to jako oddzielny backend. Możesz to sprawdzić tutaj:https://pypi.python.org/pypi /django-mysql-fix
Istnieje jednak jeszcze jedno obejście. Użyj fragmentu odpowiedzi Jakuba, ale zamień select_related na:
qs = qs.select_related('').prefetch_related('wheel', 'dealer', 'category')
Anuluje INNER JOIN i użyje 4 oddzielnych zapytań:1 do pobrania samochodów i 3 innych z car_id
W (...).
AKTUALIZACJA: Znalazłem jeszcze jedno obejście. Po określeniu null=True w polu ForeignKey, Django użyje LEFT OUTER JOIN zamiast INNER JOIN. LEFT OUTER JOIN działa w tym przypadku bez problemów z wydajnością, ale możesz napotkać inne problemy, o których jeszcze nie wiem.