[解決済み] Django の contains による多対多のフィルタリング
2022-12-12 03:01:01
質問
多対多のリレーションでオブジェクトの束をフィルタリングしようとしています。なぜなら
trigger_roles
フィールドには複数のエントリが含まれる可能性があるので
contains
フィルタを試してみました。しかし、これは文字列で使用するように設計されているので、私はこのリレーションをどのようにフィルタリングすべきか、ほとんど無力です。
values_list()
は無視できます)。
この関数は、ユーザープロファイルに添付されます。
def getVisiblePackages(self):
visiblePackages = {}
for product in self.products.all():
moduleDict = {}
for module in product.module_set.all():
pkgList = []
involvedStatus = module.workflow_set.filter(trigger_roles__contains=self.role.id,allowed=True).values_list('current_state', flat=True)
私のワークフローモデルは以下のような感じです(簡略化)。
class Workflow(models.Model):
module = models.ForeignKey(Module)
current_state = models.ForeignKey(Status)
next_state = models.ForeignKey(Status)
allowed = models.BooleanField(default=False)
involved_roles = models.ManyToManyField(Role, blank=True, null=True)
trigger_roles = models.ManyToManyField(Role, blank=True, null=True)
解決策は簡単なのかもしれないが、私の脳は教えてくれない。
ありがとうございました。
どのように解決するのですか?
このようなことを試されましたか。
module.workflow_set.filter(trigger_roles__in=[self.role], allowed=True)
または、もし
self.role.id
が pk のリストでない場合。
module.workflow_set.filter(trigger_roles__id__exact=self.role.id, allowed=True)
関連
-
[解決済み】Djangoのクエリセットフィルタリングでnot equalを行うにはどうすればよいですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] pipでPythonの全パッケージをアップグレードする方法
-
[解決済み] Djangoの "slug "とは何ですか?
-
[解決済み] Django のモデルで on_delete は何をするのですか?
-
[解決済み】Djangoでnull=Trueとblank=Trueの違いは何ですか?
-
[解決済み】Django ORMのselect_relatedとprefetch_relatedの違いは何ですか?
-
[解決済み] python-requests モジュールからのすべてのリクエストをログに記録します。
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例
-
[解決済み] Python の sorted() はどのようなアルゴリズムを使っているのですか?重複
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Pandasのデータフレームでタプルの列を分割するにはどうしたらいいですか?
-
[解決済み] Djangoで2つの日付の間を選択する
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] PyQtアプリケーションのスレッド化。QtスレッドとPythonスレッドのどちらを使うか?
-
[解決済み] Pythonの文字列書式をリストで使う
-
[解決済み] 単純な文字列からtimedeltaオブジェクトを作成する方法
-
[解決済み] Pythonでランダムなファイル名を生成する最良の方法
-
[解決済み] Pythonの辞書にあるスレッドセーフについて
-
[解決済み] 新しいpip backtrackingの実行時問題の解決
-
[解決済み] データクラスとtyping.NamedTupleの主な使用例