Hello list!
I have a couple of classes. One of the behaves as the container of the other:
class ContainerOfSamples(declarativeBase):
__tablename__ = "containers"
_id = Column("id", Integer, primary_key=True)
_samples = relationship("Samples", cascade="all, delete",
collection_class=set)
def setSamples(self, samples):
self._samples = samples
def getSamples(self):
return self._samples
def addSample(self, sample):
self._samples.add(sample)
id = sqlalchemy.orm.synonym('_id', descriptor=property(getId, setId))
samples = sqlalchemy.orm.synonym('_samples',
descriptor=property(getSamples,
setSamples))
class Sample(declarativeBase):
__tablename__ = "containers"
_id = Column("id", Integer, primary_key=True)
_whatever = Column("whatever", String(20))
_containerId = Column("container_id", Integer,
ForeignKey("containers.id"))
_container = relationship("Container", uselist=False)
def __hash__(self):
return int(self.id)
def setContainer(self, container):
self._container = container
def getContainer(self):
return self._container
id = sqlalchemy.orm.synonym('_id', descriptor=property(getId, setId))
whatever = sqlalchemy.orm.synonym('_whatever',
descriptor=property(getWhatever,
setWhatever))
container = sqlalchemy.orm.synonym('_container',
descriptor=property(getContainer,
setContainer))
It's a relationship 1:N (one sample can be in 1 container, 1 container
can have N samples)... basically, a list...
If I have an instance of ContainerOfSamples and I want to add a
sample, I can do:
container = ContainerOfSamples()
sample = Sample()
container.addSample(sample)
And the sample is properly added, the relationships are all
initialized/created/set (however you want to call it) properly... the
"containerId" in the sample is the id of the "container" instance...
perfect.
So now the question is: Is there a way of getting the same effect from
the "Sample" class? Something like:
sample = Sample()
container = ContainerOfSamples()
sample.container(container)
And then in the "container" instance the Sample "sample" would be
added to the "container.samples" set?
It doesn't seem to work... for some reason, if I try to do that, the
sample._containerId becames the id of the sample...
I don't know if playing with the "backref" would give me what I
want... I've made a few tries, but it doesn't seem to improve... Maybe
I have a misconception here :-(
Any hints, examples, link to examples... would be helpful and deeply
appreciated. Thank you in advance!
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.