2013-03-26 57 views
0

簡單用例: 用戶更新記錄後,我想獲取更改的字段並將其保存在歷史記錄表中。我使用django-ditryfields來抓取這段歷史。所以我的思考過程是使用pre_save信號來抓取所有'髒'字段,並將它們存儲在我的歷史記錄表中。使用信號或重寫模型保存方法?

問題是我在使用信號時無法獲取request.user。我需要這個來查看哪個用戶對記錄進行了更改。我的另一個想法是重寫我的模型的保存方法,但是我也無法直接從模型中獲取request.user。我將不得不從視圖中發送一個** kwarg ['user']用戶信息來獲取此信息。這很好,但我將從代碼周圍的許多不同地方撥打電話。我不希望每次編輯對象時都要傳遞request.user。這就是爲什麼我喜歡有一個點,像一個信號,來處理所有這些。也許一些我不熟悉的中間件?

有沒有更好的方法來實現這樣的事情?

回答

0

您不能從信號訪問用戶對象。 您可以考慮使用此第三方包:django-requestprovider來訪問信號中的請求對象。

另一種方法是重寫模型的保存方法。