問題タブ [django-related-manager]
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.
django - Djangoで中間テーブル全体を選択する方法
私のデータベースでは、オブジェクト間の引用を ManyToMany フィールドとして持っています。基本的に、すべてのオブジェクトは他のオブジェクトを引用できます。
Postgres では、これにより中間テーブルが作成されました。テーブルには約 1,200 万行あり、それぞれが次のようになります。
2 つの質問:
このテーブルを選択する最も Django らしい方法は何ですか?
全体をメモリに取り込まずに、このテーブルを反復処理する方法はありますか? シンプルな
select * from TABLE_FOO
.
django - Django で backref / RelatedManager の順序を指定する
私は現在2つのモデルを持っています:
blog.entry_set
で注文したい場合capture_dt
、これを取得する最良の方法は、注文を に設定してモデルにMeta
クラスを追加することです。Entry
ordering = ('capture_dt', )
残念ながら、これにより、モデルEntry
からアクセスするときのソート方法とは対照的に、 のグローバル ソート動作が変更されます。Blog
backref ごとに backref ごとに順序付け動作を設定する方法はありますか?
FWIW、SQLAlchemy は関係を宣言するときにこれをサポートします。
python - Tastypie save_m2m、TagRelatedManager は False と評価されます
実際、私はdjango-tagulousTagField
からのを含むtastypieモデルリソースを保存しようとしています
ここに私のモデルとリソースがあります:
カール部分:
シェルはエラーを返しませんが、タグは新しいオブジェクトに関連付けられていません。
ModelResource save_m2m method
タグオブジェクトが存在する呼び出しの前にをオーバーライドすることによりsuper
(print bundle.data['tags'])、super(SimpleModelResource, self).save_m2m(bundle)
tastypie でタグフィールドに関連付けられた関連マネージャーを探します。m2m アソシエーションをスキップするif not related_mngr
と評価されます。True
python - Django ORM の 1 回のリクエストで 1 つの関連オブジェクトを取得する
私はこのモデルを持っています
すべての本を取得して、現在のユーザーが 1 回のリクエストで各本を気に入っているかどうかを確認したい
Book.objects.select_related('like_book').all()
多くの結果のために機能しません
Book.objects.prefetch_related('like_book').all()
はキャッシュlike_set
されますが、このブックのすべてのいいね! が含まれます。このユーザーには 1 つだけではありません。
最後に、追加のフィールドが必要ですis_liked
django - 関連モデルの Django アノテーション
これらのモデルを持つ (簡略化):
場合によっては、各成分に「ユーザーがその製品を持っているかどうか」とマークされたレシピのリストを取得する必要があります。また、特定のユーザーに応じて、他の計算フィールドもあるかもしれません。私が欲しいものの例:
しかし、もちろん、他の場合には、そのフィールドを食材に付けたくない場合もあります。
カスタムマネージャーが必要であることを理解しています。しかし、簡単な解決策 - 「is_user_have」をプロパティとして Ingredient モデルに追加し、get_for_user メソッドでカスタム マネージャーを定義し、ベースの get_queryset を呼び出してから、for ループでそのフィールドにデータを入力する - は機能しません。
更新 1
必要な注釈を取得する方法を見つけました。ここに、成分のカスタム マネージャーを示します。
しかし、次の 2 つの問題があります。
- ユーザーをこのマネージャーに渡すことができません (テスト用にハードコードされています)
- この注釈が必要な場合に状況に合わせてプロキシ モデルを作成できません (以下を参照)。これは、Ingredient モデルのデフォルト マネージャーを置き換えた場合にのみ機能します。
代わりに使用される成分のデフォルト関連マネージャーの場合、このコードは機能しません。
Ingredient モデルのデフォルト マネージャーを置き換えた場合にのみ機能します (ただし、それは私が望むものではありません)。