2010-01-05 51 views
7

我想跟蹤創建的用戶,然後更新給定模型的所有記錄。我在登錄用戶的UserProfile中擁有「用戶」信息(所有用戶必須登錄才能更新這些記錄)。如何實現Django模型審計線索?如何在模型save()方法中訪問已登錄的用戶?

+4

這真的很晚但是我寫了一篇文章,可能對想要在django中進行模型審計的用戶有用:http://spapas.github.io/2015/01/21/django- model-auditing/ – Serafeim 2015-01-22 11:33:13

回答

2

聽起來好像你正在尋找django-reversion,它可以讓你跟蹤給定模型的所有變化,包括一些有關變化的元數據(例如誰做的)。

+0

Django修訂更適合跟蹤模型演變的狀態,似乎無助於跟蹤最後一位用戶修改記錄。 – MikeN 2010-01-05 18:38:44

+0

是的 - 請參閱http://code.google.com/p/django-reversion/wiki/LowLevelAPI – 2010-01-06 06:38:28

1

Django模型不(有意)可以訪問request對象。您必須將它傳遞給視圖中的模型。

+4

爲什麼故意不?我現在正在遇到一個案例,我覺得我需要訪問模型中的當前用戶對象。 – ultrajohn 2012-06-11 11:29:34

1

爲在管理所做的所有更改會自動設置用戶領域,將通過覆蓋在你的管理類的save_model方法(從Django文檔)的最快方法:

class ArticleAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     obj.user = request.user 
     obj.save() 

否則,你可以使用Dominic Rodger提到的django-revision。

+0

的「版本元數據」部分。這僅適用於管理員。 – MikeN 2010-01-05 18:38:12

相關問題