我修改Base类以包含我的所有表所具有的三个默认列:
class Base(object):
id = Column(Integer, primary_key=True)
date_created = Column(DateTime, default=func.current_timestamp())
date_modified = Column(DateTime, default=func.current_timestamp(),
onupdate=func.current_timestamp())
我在两列之间有一对多的关系:
class User(Base):
__tablename__ = 'users'
name = Column(Text)
password = Column(Text)
items = relationship("Item", backref=
backref('user', order_by=date_modified),
cascade="all, delete, delete-orphan")
class Item(Base):
__tablename__ = 'items'
user_id = Column(Integer, ForeignKey('users.id'))
title = Column(Text)
如果我在每个表的类中明确定义了date_created和date_modified列,那么以前工作正常。但是,从Base继承时,它不起作用,我收到以下错误:
NameError :姓名' date_modified '未定义
如何使用order_by=column_from_mixin
(order_by=date_modified
)?
谢谢。
答案 0 :(得分:5)
您可以使用以下任何一种:
backref('user', order_by=lambda: User.date_modified)
backref('user', order_by='User.date_modified')
可以使用类名User.date_modified
访问类属性,但此时仍未定义类本身。提供可调用(第二种情况在内部转换为可调用)会推迟名称解析,直到首次使用映射为止,此时所有映射的类都被定义。