Django:関係v2を介したm2mのprefetch_related()

クリストフ・コムロッシー

すでに同様の質問があることは知っていますが、エントリポイントが異なるため、私の場合はもう少し複雑だと思います。

これらは私のモデルです:

class m_Interaction(models.Model):
  fk_ip = models.ForeignKey('m_IP', related_name="interactions")

class m_User(models.Model):
  name = models.CharField(max_length=200)

class m_IP(models.Model):
  fk_user = models.ForeignKey('m_User', related_name="ips" )

class m_Feature(models.Model):
  name = models.CharField(max_length=200)
  m2m_interaction = models.ManyToManyField(m_Interaction, related_name='features', through='m_Featurescore')

class m_Featurescore(models.Model):
  score = models.FloatField(null=False)
  fk_interaction = models.ForeignKey(m_Interaction, related_name='featurescore')
  fk_feature = models.ForeignKey(m_Feature, related_name='featurescore')

m_Userから始めて、m_IPを介した相互作用(m_Interaction)とは逆の関係に従います。次に、m_Featureの特定のインスタンスの各インタラクションのすべてのm_Featurescore.scoreを取得します。

パフォーマンスの高い方法で少なくともすべてのインタラクションにアクセスするための私の作業クエリ:

m_User.objects.all().prefetch_related('ips__interactions')

しかし、このようにm_Featurescore.scoreにアクセスするための正しい「prefetch_related」ステートメントを理解できません。

db_obj_interaction.featurescore.get(fk_feature=db_obj_feature).score

多くのクエリを行うことなく。

私はすでに次のほとんどすべての組み合わせを試しました:

'ips__interactions__features__featurescore'

助言がありますか?

クリストフ・コムロッシー

コメントでnoamkの助けを借りて自分の質問に対する答えを見つけました:

のget()メソッドがdb_obj_interaction.featurescore.get(fk_feature=db_obj_feature).score呼び出されるたびに新しいクエリを発行するとは考えていませんでした(今では明らかです)。

したがって、コードを再構築しただけで、get()は不要になり、プリフェッチの利点を利用できるようになりました。

それでも誰かがPrefetch()をフィルタリングする必要がある場合は、noamkの提案に従ってオブジェクトを使用する必要があります

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Django prefetch_related with m2m through relationship

分類Dev

DjangoManyToManyFieldがm2mの関係を保存しない

分類Dev

すべてのm2m関係のDjangoループ

分類Dev

djangoはm2mの関係が本当に必要ですか?

分類Dev

Djangoでm2m関係のオブジェクトを変更する

分類Dev

Djangoはループなしで複数のm2m関係を削除します

分類Dev

M2MとFKの関係を持つDjangoモデルの正確な複製を作成する方法

分類Dev

Django多対多(m2m)同じモデルとの関係

分類Dev

SQLAlchemy lazy =動的関連付けオブジェクトパターンを使用したm2m関係

分類Dev

DjangoユーザーテーブルとのM2M関係を作成する方法

分類Dev

DjangoのM2M関係にないモデルからオブジェクトを取得する

分類Dev

保存方法を使用してM2M関係を拡張する

分類Dev

親と子供および兄弟のためのm2m関係を構築する

分類Dev

djangoでのprefetch_relatedの使用を理解できませんでした

分類Dev

PowerPivotでm2m関係を作成する方法

分類Dev

DRF-ImageFieldのシリアライザーを介したM2MはUnicodeDecodeErrorを提供します

分類Dev

オーディオを介したM2Mデータのオープンスタンダード?

分類Dev

2つのM2Mフィールドの関連する名前を使用したDjangoモデルのフィルタリング

分類Dev

Django:m2mの関係により、1行ではなく2行が作成されます

分類Dev

Djangoでモデル継承を使用したM2M関係の保存後のシグナルを処理するにはどうすればよいですか?

分類Dev

m2m関係からユーザーを取得するためにクエリを実行する方法

分類Dev

Django:リストの各値に「in」を使用したM2Mフィールドクエリ

分類Dev

Djangoの同じモデルに対する2つのm2m関係にわたる関連エンティティの数をカウントする方法

分類Dev

新しく作成されたインスタンスのsaveメソッドでm2m関係にアクセスします

分類Dev

中間テーブルを使用して、テンプレートにm2mの関係を表示するにはどうすればよいですか?

分類Dev

Django、prefetch_relatedの後にオブジェクトを更新します

分類Dev

Djangoのprefetch_related関数を使用して、2つのテーブルの結果をフィルタリングするにはどうすればよいですか?

分類Dev

オブジェクトを介してm2mのdjangoフォームオブジェクトを作成する方法

分類Dev

Django管理者はタグ(アイテムのm2mフィールド)に基づいてm2mアイテムを選択します

Related 関連記事

  1. 1

    Django prefetch_related with m2m through relationship

  2. 2

    DjangoManyToManyFieldがm2mの関係を保存しない

  3. 3

    すべてのm2m関係のDjangoループ

  4. 4

    djangoはm2mの関係が本当に必要ですか?

  5. 5

    Djangoでm2m関係のオブジェクトを変更する

  6. 6

    Djangoはループなしで複数のm2m関係を削除します

  7. 7

    M2MとFKの関係を持つDjangoモデルの正確な複製を作成する方法

  8. 8

    Django多対多(m2m)同じモデルとの関係

  9. 9

    SQLAlchemy lazy =動的関連付けオブジェクトパターンを使用したm2m関係

  10. 10

    DjangoユーザーテーブルとのM2M関係を作成する方法

  11. 11

    DjangoのM2M関係にないモデルからオブジェクトを取得する

  12. 12

    保存方法を使用してM2M関係を拡張する

  13. 13

    親と子供および兄弟のためのm2m関係を構築する

  14. 14

    djangoでのprefetch_relatedの使用を理解できませんでした

  15. 15

    PowerPivotでm2m関係を作成する方法

  16. 16

    DRF-ImageFieldのシリアライザーを介したM2MはUnicodeDecodeErrorを提供します

  17. 17

    オーディオを介したM2Mデータのオープンスタンダード?

  18. 18

    2つのM2Mフィールドの関連する名前を使用したDjangoモデルのフィルタリング

  19. 19

    Django:m2mの関係により、1行ではなく2行が作成されます

  20. 20

    Djangoでモデル継承を使用したM2M関係の保存後のシグナルを処理するにはどうすればよいですか?

  21. 21

    m2m関係からユーザーを取得するためにクエリを実行する方法

  22. 22

    Django:リストの各値に「in」を使用したM2Mフィールドクエリ

  23. 23

    Djangoの同じモデルに対する2つのm2m関係にわたる関連エンティティの数をカウントする方法

  24. 24

    新しく作成されたインスタンスのsaveメソッドでm2m関係にアクセスします

  25. 25

    中間テーブルを使用して、テンプレートにm2mの関係を表示するにはどうすればよいですか?

  26. 26

    Django、prefetch_relatedの後にオブジェクトを更新します

  27. 27

    Djangoのprefetch_related関数を使用して、2つのテーブルの結果をフィルタリングするにはどうすればよいですか?

  28. 28

    オブジェクトを介してm2mのdjangoフォームオブジェクトを作成する方法

  29. 29

    Django管理者はタグ(アイテムのm2mフィールド)に基づいてm2mアイテムを選択します

ホットタグ

アーカイブ