tortoise-orm带条件用join关联查询
时间: 2023-12-21 07:07:21 浏览: 649
Tortoise-ORM 支持使用 `join` 方法进行关联查询,可以在 `join` 方法中指定关联的表和关联条件。同时,可以使用 `where` 方法指定查询条件。
以下是一个示例:
```python
from tortoise.models import Model
from tortoise import fields
from tortoise import Tortoise
class Department(Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=50)
def __str__(self):
return self.name
class Employee(Model):
id = fields.IntField(pk=True)
name = fields.CharField(max_length=50)
department = fields.ForeignKeyField('models.Department', related_name='employees')
def __str__(self):
return self.name
async def main():
await Tortoise.init(db_url='sqlite://test.db', modules={'models': ['__main__']})
await Tortoise.generate_schemas()
employees = await Employee.filter(department_id=1).join(Department).where(Department.name == 'IT').order_by('name').all()
for e in employees:
print(e.name, e.department)
```
在上面的示例中,我们定义了两个模型类 `Department` 和 `Employee`,并且使用 `ForeignKeyField` 定义了它们之间的关联关系。在 `main` 函数中,我们首先使用 `Tortoise.init` 方法初始化 Tortoise-ORM,并且使用 `Tortoise.generate_schemas()` 方法创建数据库表。然后,我们使用 `join` 方法关联查询 `Department` 表,并且在 `where` 方法中指定查询条件。最后,我们使用 `order_by` 方法指定排序规则,并且使用 `all` 方法获取所有查询结果。
阅读全文