Ho i seguenti 3 classi:SQLAlchemy: oggetto 'InstrumentedList' non ha alcun attributo 'filtro'
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()
A chiamare get_resource, mi viene detto che l'oggetto 'InstrumentedList' non ha alcun attributo 'filtro' - I' Ho esaminato la documentazione e non riesco a capirlo. Cosa mi manca, in modo che possa essere in grado di filtrare le risorse corrispondenti ad un ambiente all'interno del mio metodo 'get_resource'?
PS: So che get_resource genererà un'eccezione, è quello che mi piacerebbe fare.
Qualcuno potrebbe spiegare a un database di n00bie cosa pigri = significa 'dinamici' e lo fa? – appleLover
Analogamente, se hai lo stesso problema con un 'backref', devi sostituire' backref = 'items'' in 'relationship' con qualcosa come' backref = db.backref (' items ', lazy =' dynamic ') '. –
senza lazy = 'dynamic', si ottiene direttamente il risultato su env.environment_resource. Ma con lazy = 'dynamic', restituisce una - puoi fare str (env.environment_resource) e ti darà la query SQL su cui puoi applicare il filtro ecc. –