tortoise-orm带条件关联查询
时间: 2023-07-06 08:09:06 浏览: 336
在 `tortoise-orm` 中,可以使用 `prefetch_related` 方法进行关联查询,同时可以使用 `Q` 对象来实现条件查询。
示例代码如下:
```python
from tortoise.query_utils import Prefetch
from tortoise.queryset import Q
# 定义关联模型
class Author(Model):
name = fields.CharField(max_length=255)
class Book(Model):
title = fields.CharField(max_length=255)
author = fields.ForeignKeyField('models.Author', related_name='books')
# 构建查询
query = Book.filter(
Q(title__icontains='python') | Q(author__name__icontains='python')
).prefetch_related(
Prefetch('author', queryset=Author.filter(name__icontains='jane'))
)
# 执行查询
books = await query
```
上面的代码实现了根据书籍标题或者作者名字中包含 "python" 的条件查询,并且限制了作者名字中必须包含 "jane"。在查询时使用了 `prefetch_related` 方法对 `author` 进行关联查询,以避免 N+1 查询问题。
阅读全文