如何实现Django模型审计跟踪?如何在模型save()方法中访问登录用户?

时间:2010-01-05 16:07:11

标签: django

我想跟踪创建的用户,然后更新给定模型的所有记录。我在登录用户的UserProfile中有“用户”信息(所有用户都必须登录才能更新这些记录)。

4 个答案:

答案 0 :(得分:3)

听起来你正在寻找django-reversion,它可以让你跟踪给定模型的所有变化,包括有关变化的一些元数据(例如是谁制作的)。

答案 1 :(得分:1)

Django模型没有(故意)有权访问request对象。您必须将其传递给视图中的模型。

答案 2 :(得分: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之类的东西。

答案 3 :(得分:0)

我发现django-simple-history非常易于使用。重要的是,它具有可用于跟踪更改原因的自定义项,可以从战略上使用该自定义项从用户那里获得知道原因的输入。