tortoise-orm关联查询
时间: 2023-07-06 10:43:19 浏览: 122
在tortoise-orm中,可以使用`.prefetch_related()`方法进行关联查询,该方法可以在查询主要表的同时,预先加载相关表的数据,避免N+1查询问题。
例如,假设有两个表`Author`和`Book`,它们之间是一对多的关系(一个作者可以有多本书),可以使用如下代码进行关联查询:
```python
from tortoise.models import Model
from tortoise import fields
class Author(Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=255)
class Book(Model):
id = fields.IntField(pk=True)
title = fields.CharField(max_length=255)
author = fields.ForeignKeyField('models.Author', related_name='books')
async def get_authors_with_books():
authors = await Author.all().prefetch_related('books')
for author in authors:
print(author.name)
for book in author.books:
print(f'\t{book.title}')
```
在上面的代码中,`prefetch_related('books')`方法将同时查询出所有的作者和他们的所有书籍,并将书籍列表存储在每个作者对象的`books`属性中,从而避免了N+1查询问题。