2011-10-20 359 views
1

我有一個通用ListView,我的html列表中的每個項目鏈接到一個DetailView。Django通用列表/詳細信息基於類的視圖

現在我想在每次點擊時增加MyModel(DetailView)對象的「views」-field(integerfield)。

所有我似乎手頭上的DetailView是get_context_data?那麼,如何在此操作中更新我的模型?

n.b.大聲思考,這應該是中間件功能嗎?

編輯 好吧,看來我確實有和的get_object提供get_queryset但這些都是空的(打印kwargs)..也更新上下文數據的整數字段(這似乎醜陋和不想要的)上點擊運行3次( 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中輸入的打印語句在點擊到特定網址時打印了3次? –

相關問題