gpt4 book ai didi

python - 如何在 SQLAlchemy 中使用来自 backref(.., order_by=..) 内部混合类的列名?

转载 作者:太空宇宙 更新时间:2023-11-03 14:28:54 26 4
gpt4 key购买 nike

我修改了基类以包含我的所有表都具有的三个默认列:

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: name 'date_modified' is not defined

如何使用 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')

可以使用类名 User.date_modified 访问类属性,但此时类本身仍未定义。提供可调用(第二种情况在内部转换为可调用)推迟名称解析,直到首次使用映射,此时所有映射类都已定义。

关于python - 如何在 SQLAlchemy 中使用来自 backref(.., order_by=..) 内部混合类的列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15053649/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com