Adding a custom Prefetch to a cloned queryset mutates the original query
メンテナーはふだん 2 日以内に返信
評価
調査の方向性
The repro imports Prefetch from tortoise.query_utils and calls prefetch_related. Read the prefetch_related implementation and the queryset clone logic. Run the snippet to confirm second_parent leaks into original. Done when original queryset remains unchanged; PR #2373 is open.
索引モデルが issue の本文から書いたものです。
説明
Here Child.parent is a foreign key to Parent. On current develop, a queryset clone shares the lists of custom prefetch queries with the original. Adding another Prefetch for the same relation changes both queries.
from tortoise.query_utils import Prefetch
original = Child.all().prefetch_related(
Prefetch("parent", Parent.all(), to_attr="first_parent")
)
derived = original.prefetch_related(
Prefetch("parent", Parent.all(), to_attr="second_parent")
)
row = await original.first()
When a child exists, row also has second_parent even though it was only requested on derived. The original queryset should remain unchanged.
- 主要言語
- Python
- スター
- 5.6k
- フォーク
- 540
- 平均マージ
- 4日 4時間
- マージ済み PR(30日)
- 32
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
tortoise/tortoise-orm のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
tortoise/tortoise-orm#668 ·
メンテナーはふだん 2 日以内に返信
-
UUIDField skips configured validators when writing values対応中かも @IlyaKhalafi が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 25/100
tortoise/tortoise-orm#2407 ·
メンテナーはふだん 2 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
tortoise/tortoise-orm#2406 ·
メンテナーはふだん 2 日以内に返信
-
TimeField skips validators for timedelta values対応中かも @IlyaKhalafi が 1 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
tortoise/tortoise-orm#2404 ·
メンテナーはふだん 2 日以内に返信
-
Email domain allowlists reject equivalent mixed-case domains対応中かも @IlyaKhalafi が 2 日前に担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
tortoise/tortoise-orm#2402 ·
メンテナーはふだん 2 日以内に返信
tortoise/tortoise-orm の issue をすべて見る
似ている issue
-
community enhancement good first issue
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 77/100
Hochfrequenz/sapgui.mcp#1039 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
didi/helixharness#18 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
dataforgoodfr/democracy-watch#46 · リアクション 1 件 ·