我在sqlalchemy中有以下关系模型:
class User(Object):
__tablename__ = 'username'
uuid = Column('uuid', BigInteger, primary_key=True, autoincrement=True)
name = Column(String(20))
parent_name = Column(BigInteger, ForeignKey(username.uuid')
children = relationship(
"User",
backref=backref("parent_name", remote_side=[uuid]),
cascade="all, delete, delete-orphan",
order_by="User.name"
)
当我从此表中获得用户对象时,请说user
,当我检索user.children时,order_by="User.name"
确保列表按字母顺序排序。如何自定义/覆盖order_by功能?例如,名称存储在数据库中作为"名字姓氏"我希望user.children返回按姓氏排序的列表。
答案 0 :(得分:1)
该表已被使用,并且有一堆我不想迁移的数据。我最终通过重载点运算符来解决问题:
def __getattribute__(self, item):
if item == 'children':
children = super(User, self).__getattribute__(item)
children.sort(key=lambda x: x.name.split(' ')[1])
return children
else:
return super(User, self).__getattribute__(item)