我需要在db范围中设置变量,这将包含django用户id是什么使得DML查询。 像这样的东西:
CREATE OR REPLACE FUNCTION set_user_id(auser_id integer)
RETURNS void AS
'GD["user_id"] = auser_id'
LANGUAGE plpythonu VOLATILE
COST 100;
并在每个DML之前调用此函数以将该用户id传递给审计触发器; 是否有一种简单的方法可以做到这一点?
答案 0 :(得分:0)
如果您只需要对某些模型进行此操作,则应覆盖模型的save
方法。
如果您需要这样做而不管正在使用的模型,但是访问您的特定数据库的任何模型,那么您应该通过为您的特定数据库调整一个来创建自己的db后端变体(在这种情况下,我怀疑它的postgresql)。
这样的事情应该这样做:
from django.db.backends.postgresql_psycopg2.base import *
class DatabaseWrapper(DatabaseWrapper):
def _cursor(self):
cursor = super(DatabaseWrapper, self)._cursor()
q = " ... enter your query here ..."
cursor.execute(q % (arg1,arg2))
return cursor