Django ForeignKey,null = True,内连接和左外连接

假设我有两个Django模型人和公司如下:

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之前的行为.

编辑 – 现在我看到我的问题的亵渎!

我想说的是我只想做

SELECT * FROM PersonTable WHERE PersonTable.company_id IS NULL

解决方法

那么这个问题是老的,很快补丁就会在Django中.但是在短短的时间里,答案是在
http://code.djangoproject.com/ticket/10790年:

Workaround: Instead of

Person.objects.filter(company=None)

use

Person.objects.exclude(company__isnull=False)

dawei

【声明】:唐山站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。