如何使用用户栏进行交易?

Ana*_*ory 2 sqlalchemy-continuum

我得到了使用 sqlalchemy-continuum 的建议,它似乎可以立即完成我想要的功能。

\n\n

默认情况下,ORM 假定存在一个用户列。我确实想保存编辑的发起者,但是文档只说\xe2\x80\x9c这是指定用户类\xe2\x80\x9d的方式,而没有说明实际使用版本化时如何指定此类对象表。

\n\n

如何指定负责事务的用户?\n是否有类似的方法向每个事务添加提交消息/原因/引用(VARCHAR)?

\n

Gor*_*kic 6

如果您可以从某个全局范围(如flask.g或flask.request)获取用户,您可以创建一个插件,实现以下transaction_args()方法:

from sqlalchemy_continuum.plugins import Plugin


class UserPlugin(Plugin):

    def transaction_args(self, uow, session):
        return {
            'user_id': get_user_from_globals()
        }
Run Code Online (Sandbox Code Playgroud)

请参阅plugins/flask.pypyramid_plugin.py。您应该返回用户模型的主键值。

您可以使用TransactionMeta 插件将附加数据保存在单独的表中。没有记录的 API 用于扩展 Transaction 类本身。它是由 创建的TransactionFactory,但在以后的版本中可能会改变。将附加数据分开保存可能是个好主意。