选择与多个条件相关的事物

问题描述 投票:1回答:1

使用Django ORM,可以在默认select_related以外的条件下执行table1.id = table2.fk(左联接)>

使用示例模型:

class Author(models.Model):
    name = models.TextField()
    age = models.IntegerField()

class Book(models.Model):
    title = models.TextField()

和原始sql

SELECT 'Book'.*, 'Author'.'name' FROM 'Book' LEFT JOIN 'Author' ON 'Author'.'id' = 'Book'.'author_id' AND 'Author'.'age' > 18 ;<---this line here is what id like to use via the ORM

我知道,在这个简单的示例中,您可以在联接后执行过滤,但是在我的特定情况下不起作用。当我在需要过滤器的多个左联接中求和时。

使用Django ORM,可以使用默认表1.id = table2.fk之外的附加条件执行select_related(左联接),使用示例模型:class Author(models.Model):...

sql django django-models orm
1个回答
0
投票
# gets all books which has author with age higher than 18
books = Book.objects.filter(author__age__gt=18) 
© www.soinside.com 2019 - 2024. All rights reserved.