2010-01-05 27 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

相关问题