如何使用Tortoise ORM创建一对多关系?

问题描述 投票:0回答:1

我正在创建一个应用程序,其中有一个一对多相关的用户实体和项目实体。 我正在使用 TORTOISE ORM,在路径为 app/models/user.py 的文件中,我有以下代码:

from tortoise import fields

from app.models.base_class import Base


class User(Base):
    name = fields.CharField(max_length = 50, nullable = False)
    last_name = fields.CharField(max_length = 50, nullable = False)
    email = fields.CharField(max_length = 128, unique = True, nullable = False)
    password = fields.CharField(max_length = 128, nullable = False)
    create_date = fields.DatetimeField(auto_now = True)

    class Meta:
        table = 'user_db'

您好,我正在创建一个应用程序,其中有一个一对多相关的用户实体和项目实体。 我正在使用 TORTOISE ORM,在路径为 app/models/user.py 的文件中,我有以下代码:

在路径:app/models/item.py 我有以下代码:

from tortoise.models import Model
from tortoise import fields

from app.models.base_class import Base

class Item(Base):
    title = fields.CharField(max_length = 50, nullable = False)
    description = fields.TextField(nullable = False)
    weight = fields.DecimalField(max_digits=3)
    cost = fields.DecimalField(max_digits=3)
    url_image = fields.CharField(max_length = 255)
    user_id = fields.ForeignKeyField(
        'app.models.user.User',
        'id',
        on_delete = fields.CASCADE
    )

我的问题是,如果我在 user_id 字段中正确实现了外键,那么为模型名称参数编写路径“app.models.user.User”是否正确?我是否必须在 item.py 中导入 User 才能执行此操作? 或者,另一方面,我应该在此参数中写入“user_db”,这将是用户模型表的名称?我正在纠结这个问题。

orm foreign-keys relational-database relationship tortoise-orm
1个回答
0
投票

使用ForeignKeyField 可以创建这样的关系。 该字段应该定义在“多”侧,并且 related_name 可用于定义关系的“一”侧“自动生成字段”的名称(这样它就可以查询与其连接的多个对象) )。 查看测试中的 Book 模型 (https://github.com/tortoise/tortoise-orm/blob/develop/tests/testmodels.py#L39) 以及如何在测试中使用该模型.

© www.soinside.com 2019 - 2024. All rights reserved.