使用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):...
# gets all books which has author with age higher than 18
books = Book.objects.filter(author__age__gt=18)