0

独自のテンプレート メソッドを作成せずに、テンプレートでモデルのメソッドを呼び出すことはできません。したがって、たとえば、コメントの賛成票の数を表示するには:

comment.rating_set.filter(vote=1).count()

各コメントは、テンプレートに送信される前に、次のように rating_set メンバーが追加されています。

comment.rating_set = comment.rating_set.filter(vote=1).count()

簡単ですが、コメントを取得するにはいくつかの方法があります (つまり、状況に応じて、コメントを取得するために使用されるいくつかの方法があります)。テンプレートは常に使用されます。

各メソッドについて、次の代わりに変更することができます。

return commentList

それは読む

return addInVotes(commentList)

whereaddInVotesは、リスト内の各コメントをループし、上記のコードを実行して rating_count 値を追加する単純な関数です。

ここでの質問はこれです-これをすべてのメソッドに追加する代わりに、コードをmodel.getおよびmodel.filterに「添付」することは可能ですか? コメントのモデルを拡張して、新しく定義されたフィルターを取得できることは承知していますが、他に方法はありますか? dJango がどこかに隠していたであろうもののように思えます。

4

1 に答える 1

1

Managerオブジェクトを見てください。すべてのビューではなく、1 か所で共通のフィルタリングを行う追加のメソッドを使用して、デフォルト マネージャのサブクラスを作成できます。

于 2012-06-21T22:19:24.230 に答える