Diciamo che ho due modelli Django Persona e Società come segue: -Django ForeignKey con null = True, inner join, e ha lasciato outer join
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)
una persona può o non può appartenere ad una società.
Sto usando MySQL. Voglio tutte le Persone che non appartengono a nessuna Azienda, cioè Persone in cui la società è nulla.
Se faccio Person.objects.filter(company__isnull=True)
ottengo una SQL che è essenzialmente: -
SELECT * FROM PersonTable LEFT OUTER JOIN AgencyTable ON (PersonTable.company_id = AgencyTable.id) WHERE AgencyTable.id IS NULL
Come posso fare per raggiungere il seguente SQL: -
SELECT * FROM PersonTable INNER JOIN AgencyTable ON (PersonTable.company_id = AgencyTable.id) WHERE AgencyTable.id IS NULL
Da quanto ho capito dalla lettura della mailing list di Django Users, questo era il comportamento prima di QuerySet Refactor.
EDIT - Ora vedo la bestemmia della mia domanda!
Quello che voglio dire è che semplicemente voglio fare
SELECT * FROM PersonTable WHERE PersonTable.company_id IS NULL
Beh, se questo non è dare un senso a voi, questo è in realtà una query di 'base' che ottiene INTERNO è unito con altre query, e questo porta alla strana , risultati ripetitivi. – chefsmart
Questa domanda è davvero il risultato di un blocco mentale. – chefsmart