Ik heb een oplossing voor INNER JOIN voor Django ORM geïmplementeerd, het zal STRAIGHT_JOIN gebruiken in het geval van bestellen met INNER JOINs. Ik sprak met Django core-devs en we besloten dit voorlopig als een aparte backend te doen. Dus je kunt het hier bekijken:https://pypi.python.org/pypi /django-mysql-fix
Er is echter nog een andere oplossing. Gebruik een fragment uit het antwoord van James, maar vervang select_related door:
qs = qs.select_related('').prefetch_related('wheel', 'dealer', 'category')
Het annuleert INNER JOIN en gebruikt 4 afzonderlijke zoekopdrachten:1 om auto's op te halen en 3 andere met car_id
IN (...).
UPDATE: Ik heb nog een oplossing gevonden. Zodra u null=True opgeeft in uw ForeignKey-veld, gebruikt Django LEFT OUTER JOINs in plaats van INNER JOIN. LEFT OUTER JOIN werkt in dit geval zonder prestatieproblemen, maar u kunt andere problemen tegenkomen waarvan ik me nog niet bewust ben.