gpt4 book ai didi

python - sqlalchemy: 'InstrumentedList' 对象没有属性 'filter'

转载 作者:IT老高 更新时间:2023-10-28 22:20:41 29 4
gpt4 key购买 nike

我有以下 3 个类(class):

class Resource:
id = Column(Integer, primary_key=True)
path = Column(Text)
data = Column(Binary)
type = Column(Text)

def set_resource(self, path, data, type):
self.path = path
self.data = data
self.type = type

class EnvironmentResource(Base, Resource):
__tablename__ = 'environment_resources'
parent_id = Column(Integer, ForeignKey('environments.id', ondelete='CASCADE'))
def __init__(self, path, data, type):
self.set_resource(path, data, type)

class Environment(Base):
__tablename__ = 'environments'
id = Column(Integer, primary_key=True)
identifier = Column(Text, unique=True)
name = Column(Text)
description = Column(Text)

_resources = relationship("EnvironmentResource",
cascade="all, delete-orphan",
passive_deletes=True)
_tools = relationship("Tool",
cascade="all, delete-orphan",
passive_deletes=True)

def __init__(self, name, identifier, description):
self.name = name
self.identifier = identifier
self.description = description

def get_resource(self, path):
return self._resources.filter(EnvironmentResource.path==path).first()

在调用 get_resource 时,我被告知 'InstrumentedList' 对象没有属性 'filter' - 我已经阅读了文档,但无法完全弄清楚这一点。我错过了什么,以便我可以过滤与我的“get_resource”方法中的环境相对应的资源?

PS:我知道 get_resource 会抛出异常,这就是我希望它做的事情。

最佳答案

为了使用 relationshipQuery 一样,您需要使用 lazy='dynamic' 对其进行配置。在 Dynamic Relationship Loaders 中查看更多信息:

_resources = relationship("EnvironmentResource",
cascade="all, delete-orphan",
lazy='dynamic',
passive_deletes=True)

关于python - sqlalchemy: 'InstrumentedList' 对象没有属性 'filter',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11578070/

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