2011-10-20 11 views
1

私は、Generic ListViewを持っています。私のHTMLリストの各アイテムはDetailViewにリンクしています。Django一般的なリスト/詳細クラスベースのビュー

ここで、クリックごとにMyModel(DetailView)オブジェクトの "views" -field(integerfield)を増やしたいと思います。

私が手にしているようですが、DetailViewはget_context_dataですか?どうすればこのアクションで自分のモデルを更新できますか?

n.b.これはミドルウェアの機能性であるべきなのでしょうか?

編集 [OK]を、また、(1回のクリックで3回を実行します(醜いと不要と思われる)コンテキスト・データ内の整数フィールドを更新..私はGET_OBJECTとget_querysetが利用できる持っているが、それらは、(印刷kwargsから)空になっているようです3、6、9など)

答えて

1

あなたは確かにこのように、GET_OBJECT方法でそれを行うことができます。

class YourView(DetailView): 

    queryset = YourModel.objects.all() 

    def get_object(self): 
     object = super(YourView, self).get_object() 
     object.views = object.views + 1 
     object.save() 
     return object 
+0

まあ、私はモデルがシングルトンではないので、これは仕事ができると思いますが、私はまだ思ったんだけどミドルウェアがより良い場合: –

+0

ミドルウェアは、このビューだけでなく、すべての要求に対して機能します。特定のオーバーヘッドです – pomel

+0

detailview内に置かれたprint文がその特定のURLへのクリックで3回印刷されるという論理的な理由はありますか? –

関連する問題