比方说,我有两个Django模型人士及公司如下: -的Django ForeignKey的与空=真,内部连接和左外连接
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用户邮件列表,这曾经是QuerySet Refactor之前的行为。
编辑 - 现在我看到了我的问题的亵渎!
我想说的是,我只是想做
SELECT * FROM PersonTable WHERE PersonTable.company_id IS NULL
好吧,如果这是不是你做的意义,这实际上是一个“基地”查询得到INNER加入了与其他查询,这导致怪异,重复的结果。 – chefsmart 2010-02-17 06:14:31
这个问题真的是心理障碍的结果。 – chefsmart 2010-02-17 06:58:28