tortoise-orm关联查询
时间: 2023-07-06 13:09:02 浏览: 336
在 Tortoise-ORM 中进行关联查询需要使用 `prefetch_related` 和 `join` 方法。例如,假设有以下两个模型:
```python
from tortoise import fields
from tortoise.models import Model
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')
```
现在需要查询所有书籍以及其作者的姓名,可以使用以下代码进行关联查询:
```python
books = await Book.all().prefetch_related('author')
for book in books:
print(f"Title: {book.title}, Author: {book.author.name}")
```
以上代码中,`prefetch_related` 方法用于关联查询,并指定需要关联的外键字段名。在查询结果中,可以通过 `book.author` 访问关联的作者对象,并通过 `book.author.name` 访问作者的姓名。
此外,如果需要查询结果中包含作者信息的话,可以使用 `join` 方法。例如:
```python
books = await Book.all().join(Author).values('title', 'author__name')
for book in books:
print(f"Title: {book['title']}, Author: {book['author__name']}")
```
以上代码中,`join` 方法用于关联查询,并指定需要关联的模型。在查询结果中,可以通过 `book['author__name']` 访问作者的姓名。注意,使用 `values` 方法指定需要查询的字段时,需要使用双下划线进行关联字段的访问。
阅读全文
相关推荐



















