我正在创建一个应用程序,其中有一个一对多相关的用户实体和项目实体。 我正在使用 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”,这将是用户模型表的名称?我正在纠结这个问题。
使用ForeignKeyField 可以创建这样的关系。 该字段应该定义在“多”侧,并且 related_name 可用于定义关系的“一”侧“自动生成字段”的名称(这样它就可以查询与其连接的多个对象) )。 查看测试中的 Book 模型 (https://github.com/tortoise/tortoise-orm/blob/develop/tests/testmodels.py#L39) 以及如何在测试中使用该模型.