は不思議でも私は、このexactissueに出くわしました。 後で私は自分のコードを変更しなければなりませんでしたが、私はその解決策を得ることができませんでした。明らかに何が起こるかは次のようなものです。
テンプレートに書き込むものは何でも、ノード、変数などとして分割されます。レンダリング時の変数は、そのインスタンスが利用できるコンテキストで検索されます。 regroup
タグの場合は、利用可能なコンテキストはobject_list
で、最初の引数として渡したことに注意してください。 通常のコンテキスト(あなたの場合は 'user'を含む)ではなく、テンプレート全体に対してグローバルです。だから、あなたが指定した他の変数を見つけることができません。これはあなたにはありませんobject_list
。
したがって、あなたのケースでは、再グループ化できるコンテキストはproj_messages.object_list
のオブジェクトです。したがって、リゾルバコードはコンテキスト内で変数created_on
を見つけることができますが、user
では見つけることができません。そしてそれがここでテンプレート例外を投げているのです。
あなたのobject_list
もuser
属性を持っていれば、どうなるでしょうか?その場合、KeyErrorはありません。が、user
がフィルタに渡されます。これは、渡すべき変数user
ではありません。リクエストに応じて
編集: 再グループタグ内のフィルタのような使用にuser
を渡すために、ではない直接的な方法があります。しかし、一種のハックは明らかに機能します。注意、そのちょうどハック。 proj_messages.object_list
の個々のエンティティ/オブジェクトに、ビューからのそのユーザー変数を含めるか、テンプレートのobject_listに追加のフィルタを使用させます。 しかし、それよりも良いのは、user
をどこからでも利用できるようにするためには、コンテキスト外から、もう1つのハックを検討してください。チェックアウト:http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser
ユーザー変数をフィルタに渡す方法はありますか? –