0

我需要在 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 传递给审计触发器;有没有简单的方法来做到这一点?

4

1 回答 1

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
于 2012-05-03T14:18:10.593 回答