You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Tortoise ORM一对多关系中外键配置是否正确?

Tortoise ORM 一对多关系中外键参数的正确用法

关于用app.models.user.User作为外键参数

这个写法是完全正确的。Tortoise ORM原生支持使用完整的模型路径字符串来指定外键关联的目标模型,这种方式能完美规避跨文件模型之间的循环导入问题,非常适合拆分到不同文件的模型关联场景。

是否需要在item.py中导入User类

不需要强制导入。用模型路径字符串定义外键时,ORM会自动根据路径找到对应的模型,完全不需要手动导入User类。当然如果你的代码里有其他逻辑需要用到User类(比如查询时的关联操作),导入也没问题,但外键定义本身不依赖这个导入。

能不能用User模型的表名user_db作为参数

不推荐这么做。Tortoise ORM的外键设计是基于模型抽象层的,用模型路径或模型类本身来定义关联,能让代码更贴合ORM的设计理念,而且后续如果修改了模型的表名配置,也不需要同步修改外键参数,维护性更强。只有在关联非ORM管理的第三方数据库表时,才需要考虑直接用表名。

另外补充个更规范的写法:优先使用ForeignKeyField来定义关联,而不是单独用IntField加foreign_key参数,前者会自动处理外键约束和反向关联关系,代码更简洁:

# app/models/item.py
from tortoise import fields, models

class Item(models.Model):
    name = fields.CharField(max_length=100)
    # 用ForeignKeyField直接关联模型路径,同时指定反向关联名
    user = fields.ForeignKeyField("app.models.user.User", related_name="items", on_delete=fields.CASCADE)

内容的提问来源于stack exchange,提问作者Diegol

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 11:20:35