文档说把它放在某个地方:
from sqlalchemy import event
from colanderalchemy import setup_schema
event.listen(mapper, 'mapper_configured', setup_schema)
这应该在金字塔哪里去?我应该使用 Pyramid 事件而不是 SQLAlchemy 的吗?
当我尝试将它放在 models.py 文件的顶部时,它抱怨mapper
不存在;我还应该使用它吗?
文档说把它放在某个地方:
from sqlalchemy import event
from colanderalchemy import setup_schema
event.listen(mapper, 'mapper_configured', setup_schema)
这应该在金字塔哪里去?我应该使用 Pyramid 事件而不是 SQLAlchemy 的吗?
当我尝试将它放在 models.py 文件的顶部时,它抱怨mapper
不存在;我还应该使用它吗?
测试套件显示它的工作方式如下:
from sqlalchemy import event
from colanderalchemy import setup_schema
from sqlalchemy.orm import mapper
event.listen(mapper, 'mapper_configured', setup_schema)
请让我知道这是否为您解决了问题,我可以相应地更新文档。
您需要使用SQLAlchemy 事件,因为它们告诉 SQLAlchemy 内部发生的事情(它们根本与金字塔事件无关)。
ColanderAlchemy 的文档令人困惑;他们在mapper
这里要求的是您的模型类(它不是映射器)。
因此,在您的模型中,您应该执行以下操作:
class MyModelClass(Base):
...
event.listen(
MyModelClass,
"mapper_configured",
setup_schema)