Скажем, у меня есть два Django модели человека и общества следующим образом: -Джанго ForeignKey с нулевым = True, внутреннее соединение и левое внешнее соединение
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)
Человек может или не может принадлежать к компании.
Я использую MySQL. Я хочу, чтобы все Лица, не принадлежащие какой-либо Компании, то есть Лица, где компания является нулевой.
Если я Person.objects.filter(company__isnull=True)
я получаю SQL, который по существу: -
SELECT * FROM PersonTable LEFT OUTER JOIN AgencyTable ON (PersonTable.company_id = AgencyTable.id) WHERE AgencyTable.id IS NULL
Как я могу идти о достижении следующего SQL: -
SELECT * FROM PersonTable INNER JOIN AgencyTable ON (PersonTable.company_id = AgencyTable.id) WHERE AgencyTable.id IS NULL
Из того, что я собираю от чтения списка рассылки Django Users, это было поведение перед QuerySet Refactor.
EDIT - Теперь я вижу богохульство в моем вопросе!
То, что я хочу сказать, я просто хочу, чтобы сделать
SELECT * FROM PersonTable WHERE PersonTable.company_id IS NULL
Ну, если это не делает смысл для вас, это на самом деле является «базовой» запрос, который получает ВНУТРЕННИЙ объединился с другими запросами, и это приводит к странным , повторяющиеся результаты. – chefsmart
Этот вопрос действительно является результатом ментального блока. – chefsmart