Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 使用信号或覆盖模型保存方法?_Django_Django Signals - Fatal编程技术网

Django 使用信号或覆盖模型保存方法?

Django 使用信号或覆盖模型保存方法?,django,django-signals,Django,Django Signals,简单用例: 在用户更新记录后,我希望获得更改的字段并将其保存在历史记录表中。我习惯于抓住这段历史。所以我的想法是使用pre_save信号获取所有“脏”字段,并将它们存储在我的历史记录表中 问题是在使用信号时无法获取request.user。我需要这个来查看哪个用户对记录进行了更改。我的另一个想法是重写模型的save方法,但是我也不能直接从模型中获取request.user。我必须发送一个**kwarg['user'],其中包含视图中的用户信息才能获取此信息。这很好,但我将在代码中的许多不同地方进

简单用例: 在用户更新记录后,我希望获得更改的字段并将其保存在历史记录表中。我习惯于抓住这段历史。所以我的想法是使用pre_save信号获取所有“脏”字段,并将它们存储在我的历史记录表中

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


有没有更好的方法来实现这一点?

您无法通过信号访问用户对象。 可以考虑使用这个第三方软件包:访问信号中的请求对象。 另一种方法是重写模型的save方法