17
を持っていない私は、次の3つのクラスがあります。get_resourceを呼んでSQLAlchemyの「InstrumentedList」オブジェクトが属性「フィルタ」
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()
は、私が「InstrumentedList」オブジェクトが属性「フィルタ」を持っていないことを告げています - 私は」ドキュメンテーションを見て、これを理解することはできません。何が欠けているので、私の 'get_resource'メソッド内の環境に対応するリソースをフィルタすることができるでしょうか?
PS:私はget_resourceが例外をスローすることを知っています。それは私がしたいことです。
で詳細をご覧ください。誰かがデータベースに説明してくださいn00bie lazy = 'dynamic'とはどういう意味ですか? – appleLover
同様に、 'backref'と同じ問題がある場合、' backref = db.backref( 'items'、lazy = 'dynamic')のようなもので 'relationship'の' backref = 'items''を置き換える必要があります。 '。 –
lazy = 'dynamic'を指定しないと、env.environment_resourceで直接結果が得られます。しかし、lazy = 'dynamic'を指定すると、を返します。str(env.environment_resource)を実行すると、フィルタなどを使用してSQLクエリを実行できます –