问题标签 [tortoise-orm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何在 FastAPI 中使用 tortoise orm 插入 ManyToManyField 的数据
这是我的 HTML 表单,
我的模型就像,
如何List
在 FastAPI 中获取具有类别属性的表单数据并将其提交到数据库中,并将类别字段作为 ManyToManyField 关系。
我在网上搜索了很多以找到它的解决方案,但不幸的是不能。
任何帮助将不胜感激。谢谢
python - FastAPI + Tortoise ORM + FastAPI 用户 (Python) - 关系 - 多对多
我正在使用 FastAPI、Tortoise ORM 和 FastAPI 用户来制作 API 来学习。基本上,我从 OpenWeather API 获取城市天气数据,并使用 Tortoise ORM 存储在 SQLite 数据库中。我对 FastAPI 用户进行了身份验证。
我正在使用外键并且关系工作正常。但现在我想要一些改变(改进)。我希望每个用户都有他们的项目,并且在登录并访问端点(@router.get("/me/onlyitems/", response_model=List[schemas.Card_Pydantic])
)之后,它只接收他们的项目。
它工作正常,我只收到用户项目(使用 owner_id),但我的项目表使用外部唯一 ID(项目是一个城市,每个城市都有一个唯一 ID),它是主键。但是,当另一个用户尝试添加同一个城市时,它会给出错误,因为它不能在表中包含相同的城市,即使是另一个所有者。嗯,应该是这样......但我想让其他用户访问相同的城市(他们有相同的信息,他们没有定制)。然后,我希望许多用户可以访问同一个项目(并且每个用户可以访问多个项目)。
我认为为每个用户重复项目信息(使用另一个 ID)并不理想,不同的用户访问同一个项目会更好。
我认为这将是多对多关系,但我不知道如何建立关系并使用 FastAPI 获取它。
我考虑过创建一个中间表,仅使用 UserID 和 CityID(以及一个自动增量 ID)并使用它来获取相关数据,但我不知道这是否是最好的方法或者是否可行。
我试图从 Tortoise 文档中学习,但我找不到我需要的部分或理解文档的一些复杂示例和部分。
我正在使用更新版本的包和 Python 3.9.4
好吧,让我展示一些代码:
模型.py
我试图更改我的所有者字段及其与 UserModel 的关系:
我不知道它是否正确,我无法使其工作,但问题可能出在其他地方。
我的用户端点创建一个项目:
此处使用(创建项目)的 CRUD 函数:
我的端点来获取用户拥有的项目:
我的crud函数是:
我如何更改它以获取用户需要访问的卡?我想我不能使用 owner_id 的过滤器,(好吧,如果我可以创建我的中间表,我可以,但不知道如何做并获取数据)但不知道如何建立关系将用户链接到他添加的项目,同时其他用户访问相同的项目。
这段代码工作正常(我使用的是 nuxt.js 前端),直到有一个重复的城市......
处理它的最佳方法是什么以及如何处理?
谢谢,迭戈。
python - 失败的 test_main.py::test_login_success - tortoise.exceptions.ConfigurationError:没有与模型关联的数据库
我是 Pytest 的新手,我正在尝试测试,我将错误与 db 相关联。但是配置是正确的,应用程序工作正常,但是测试脚本给出了这个错误
主文件
test_main.py
我得到的错误显示在下面
python - 如何使用 asyncpg (python) 在 postgresql 表中插入具有 ManyToMany 关系的列?
我想在一开始就说明这是一个混合 python 和 postgresql 的问题。我目前正在使用 tortoise-orm 为我处理所有与 sql 相关的东西,但今天我在插入 JSONB 字段时遇到了困难。这是我的桌子:
我想在pt_data
表中插入一行,然后将该行添加到表中的data
列pt_info
但在执行此操作时出现错误:
idk为什么python无法解析那个dict
所以我想用原始 SQL 来做这个,因为我用 tortoise-orm 做这个,我对原始 SQL 没有太多经验,我知道基础知识,但这对我来说是先进的。
我应该在这里做什么?你能帮我写下我想在这里实现的原始 SQL 查询吗?
谢谢。
python - 如何检查一个对象是否在其多对多关系中包含某些对象?
我正在使用我认为基于 Django-ORM 的Tortoise- ORM。
假设我的数据库如下所示:
是否可以使用单一内置过滤方法查询所有成分名称为“番茄”和“洋葱”的食谱?
更新#1
我尝试过使用:
Recipe.filter(Q(ingredients__name='tomato') & Q(ingredients__name='onion'))
但它不起作用,并且从该语句生成的原始 sql 无效。
python - 如何从他的多对多关系中选择包含某些孩子的父母?
鉴于这段代码(Python & TortoiseORM):
如何查询包含 BOTH Ingredient.name="tomato" 和 Ingredient.name="onion" 的所有食谱?我相信在 Django-ORM 中,可以使用 & 运算符或 intersect 方法创建一些查询集的交集。
更新#1
这个查询有效,但在我看来有点混乱,当我想查询所有包含超过 2 种成分的食谱时,它会出现问题。
更新#2
python - python后端应用程序中的验证约定
假设我目前正在使用tortoise-orm和FastAPI以及pydantic。
我应该只使用请求正文的pydantic 验证,还是应该使用由tortoise-orm提供的验证器验证我将要保存在数据库中的记录?
我目前正在进行双重验证(pydantic和tortoise-orm),但我想知道是否需要它,或者它是否只是多余的矫枉过正。
python - 如何使用 pydantic 序列化模型的所有相关模型
设置(龟甲模型):
假设我们有一只手的 id,我们想将其所有相关的手指返回给用户。我应该如何为它创建pydantic模型,我应该如何查询所有提到的手指?
到目前为止我尝试过的(没有运气):
#1
#2
python - Tortoise ORM - 具有 Postgresql 时间字段的 Pydantic 模型
我正在尝试使用以 Postgresql 作为后端的 Tortoise ORM 创建 Pydantic 模型。我有列start_time
并end_time
在 Postgres 中定义为时间数据类型。我尝试了我的课程如下:
当我尝试创建记录时,我最终收到一条错误消息“tortoise.exceptions.OperationalError:查询参数 $5 的无效输入:''('str' 对象没有属性'hour')”
Tortoise 字段没有 TimeField,我什至尝试使用字段。DatetimeField 给了我“08:00:00”的无效日期时间格式
任何指向正确方向的指针都会有所帮助。提前致谢
更新:@Adrian Klaver 谢谢你的建议。我已将这些字段更改为 DatetimeField
我的输入值必须从
至
现在它能够正确插入值。然而,选择函数现在出现“iso8601.iso8601.ParseError: Expecting a string datetime.time(10, 0)”错误
python - 导入配置模块时出错:没有名为“app”的模块 [aerich]
我发现自己在玩 python 后端,为此我使用了 fastapi和tortoise-orm。但是,每次更改tortoise-orm 模型后手动更新数据库很痛苦,因此我使用了专门为此目的开发的开箱即用的 aerich 工具。但是,我在导入时遇到了问题,而且我很累,因为我不知道我做错了什么。
出于某种原因,在初始化迁移目录和 aerich 设置文件后,运行任何命令 fe
"aerich migrate
或aerich inspectdb
" 都会抛出我在标题中输入的
错误:导入配置模块时出错:没有名为 'app' 的模块。
这是我的设置: