如何通过ORM以父记录子项存在的条件访问父子关系?

时间:2013-04-12 23:02:54

标签: sql django orm django-models

我正在尝试通过Django ORM创建一个查询,这是一个直接连接。我试图只从父表中提取子表中有条目的记录,另外,我想在父表上添加一个条件。

以下是样本模型:

class Reporter(models.Model):    
    first_name = models.CharField(max_length=64)
    last_name = models.CharField(max_length=64)

class Article(models.Model):
    pub_date = models.DateField()
    headline = models.CharField(max_length=200)
    content = models.TextField()
    reporter = models.ForeignKey(Reporter) 

SQL看起来如下:

Select * from Reporter 
JOIN Article ON Article.reporter_id = Reporter.id 
where Reporter.last_name="Jones"

如何使用Django ORM构建上述查询?

1 个答案:

答案 0 :(得分:3)

这将进行内部联接并返回记者:

Reporter.objects.filter(last_name='Jones', article__isnull=False)

(它还会为article.id IS NOT NULL

添加无害的WHERE