Django ForeignKey avec null=True, jointure interne, et d'une jointure externe gauche

Disons que j'ai deux modèles Django Personne et la Société, comme suit: -

class Company(models.Model):
    name = models.CharField()

class Person(models.Model):
    last_name = models.CharField(blank=True)
    first_name = models.CharField()
    company = models.ForeignKey(Company, null=True, blank=True)

Une Personne peut ou peut ne pas appartenir à une Société.

Je suis de l'utilisation de MySQL. Je veux que toutes les Personnes qui n'appartiennent pas à une Société, qui est, les Personnes où l'entreprise est nul.

Si je ne Person.objects.filter(company__isnull=True) - je obtenir un SQL qui est essentiellement: -

SELECT * FROM PersonTable LEFT OUTER JOIN AgencyTable ON (PersonTable.company_id = AgencyTable.id) WHERE AgencyTable.id IS NULL

Comment puis-je atteindre le SQL suivant: -

SELECT * FROM PersonTable INNER JOIN AgencyTable ON (PersonTable.company_id = AgencyTable.id) WHERE AgencyTable.id IS NULL

De ce que je comprends à la lecture de l'Django liste de diffusion des Utilisateurs, c'est le comportement avant de QuerySet Refactoriser.

EDIT -- je vois Maintenant que le blasphème de ma question!

Ce que je veux dire c'est que je veux simplement faire

SELECT * FROM PersonTable WHERE PersonTable.company_id IS NULL

Eh bien, si cela ne fait pas de sens pour vous, c'est en fait une 'base' de la requête qui obtient INTÉRIEURE Joint à d'autres requêtes, ce qui conduit à l'étrange, répétitif résultats.
Cette question est vraiment le résultat d'un blocage mental.

OriginalL'auteur chefsmart | 2010-02-17