1. ホーム
  2. python

[解決済み] django テンプレートでクエリのフィルタリングを行うには?

2023-02-27 16:17:42

質問

django テンプレートからフィルタリングされたクエリを実行し、ビュー内の python コードに相当するオブジェクトのセットを取得する必要があります。

queryset = Modelclass.objects.filter(somekey=foo)

私のテンプレートでは、次のようにしたいと思います。

{% for object in data.somekey_set.FILTER %}

を書きたいのですが、FILTERの書き方がどうしてもわかりません。

どのように解決するのですか?

これは設計上できません。 Django フレームワークの作者は、プレゼンテーションコードとデータロジックを厳密に分離することを意図しています。 モデルのフィルタリングはデータロジックであり、HTML の出力はプレゼンテーションロジックです。

ですから、いくつかのオプションがあります。 最も簡単なのは、フィルタリングを行い、その結果を render_to_response . あるいは、モデルにメソッドを書いて、そのメソッドで {% for object in data.filtered_set %} . 最後に、あなた自身のテンプレートタグを書くこともできますが、この特定のケースでは、私はそれを避けることをお勧めします。