Phi*_*hil 3 python sqlite sqlalchemy python-2.7
我修改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())
Run Code Online (Sandbox Code Playgroud)
我在两列之间有一对多的关系:
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)
Run Code Online (Sandbox Code Playgroud)
如果我在每个表的类中明确定义了date_created和date_modified列,那么以前工作正常.但是,从Base继承时,它不起作用,我收到以下错误:
NameError:未定义名称" date_modified "
如何使用order_by=column_from_mixin(order_by=date_modified)对backref关系进行排序?
谢谢.
您可以使用以下任一方法:
backref('user', order_by=lambda: User.date_modified)
backref('user', order_by='User.date_modified')
Run Code Online (Sandbox Code Playgroud)
可以使用类名访问类属性User.date_modified,但此时仍未定义类本身.提供可调用(第二种情况在内部转换为可调用)会推迟名称解析直到首次使用映射,此时定义所有映射类.
| 归档时间: |
|
| 查看次数: |
328 次 |
| 最近记录: |