找到了一个更清洁的解决方案:
sqlalchemy.ext.declarative.declared_attr在sqlalchemy
0.6.5中使用装饰器(
sqlalchemy.util.classproperty在sqlalchemy <= 0.6.4中)
class NotesMixin(object): @declared_attr def notes(cls): return sa.Column(sa.String(4000) , nullable=False, default='')
根据文档,这是“用于具有外键的列,以及需要目的地明确上下文的各种映射器级构造”。虽然严格来说不是这种情况,但它是通过在构造子类时调用方法(并创建列)来实现的,从而避免了进行复制的需要。这意味着mixin列将在末尾。可能比黑客更好的解决方案
_creation_order…



