0

简单用例:用户更新记录后,我想获取更改的字段并将它们保存在历史表中。我正在使用django-ditryfields来获取这段历史。所以我的想法是使用 pre_save 信号来获取所有“脏”字段并将它们存储在我的历史记录表中。

问题是我在使用信号时无法获取 request.user 。我需要这个来查看哪个用户对记录进行了更改。我的另一个想法只是覆盖我的模型的保存方法,但我也无法直接从模型中获取 request.user 。我必须从视图中发送带有用户信息的 **kwarg['user'] 才能获取此信息。这很好,但我将从代码周围的许多不同位置进行保存调用。我不想每次编辑对象时都必须传递 request.user 。这就是为什么我希望有一个位置,比如一个信号,来处理所有这些。也许一些我不熟悉的中间件?

有没有更好的方法来实现这样的事情?

4

1 回答 1

0

您不能从信号访问用户对象。您可以考虑使用这个第三方包:django-requestprovider来访问信号中的请求对象。

另一种方法是覆盖模型的保存方法。

于 2013-03-26T14:25:24.343 回答