On Oct 27, 2010, at 2:36 PM, Mark Erbaugh wrote:
> I have a data graph mapped as:
>
> class BatchDetail(BASE):
>
> __tablename__ = TABLE_BATCH_DET
>
> id = Column(Integer, primary_key=True)
> batch = Column(ForeignKey(TABLE_BATCH_HDR + '.id'))
> account_id = Column(ForeignKey(TABLE_L3_ACCT + '.id'))
> # other fields
>
> # -----------------------------
>
> class BatchHeader(BASE):
>
> __tablename__ = TABLE_BATCH_HDR
> id = Column(Integer, primary_key=True)
>
> # other fields
>
> detail = relation('BatchDetail',
> backref=backref('header', remote_side=id))
>
> # ---------------------------
>
> class L3Acct(BASE):
>
> __tablename__ = TABLE_L3_ACCT
> __table_args__ = (UniqueConstraint("l2_id", "l3_acct"), {})
>
> id = Column(Integer, primary_key=True)
> parent = Column(ForeignKey(TABLE_L3_ACCT + '.id'))
> l2_id = Column(ForeignKey(TABLE_L2_ACCT + '.id'))
> # other fields
>
>
> Basically, a 'batch' consists of a number of detail lines, each of which has
> an associated L3Account. In addition, each L3Acct is a child of a L2Acct
> (l2_id foreign key) and may be a child of another L3Acct (parent foreign key).
>
> The application considers the 'batch' (BatchHeader) as the main item. A batch
> is created and detail (BatchDetail) rows are added. The L3Acct is used as a
> lookup. In my mapping, I haven't set up a relationship between BatchDetail
> and L3Acct and I'm maintaining that relationship with code external to the
> mapping. Is it possible to let SA manage this relationship?
>
> if so, Here's what I'm having trouble with. When the application needs to
> add a new detail record, it can just create a new BatchDetail instance and
> append it to the detail collection. I assume that similarly, to associate a
> L3Acct, the BatchDetail instance needs to be added to a collection associated
> with L3Acct, but where is that collection? And how would one change the
> association from one L3Acct to another? Maybe a better way of asking this
> question is how to you work with a one-many relationship from the 'many'
> side?
>
I've done a little reading in the docs and some playing with some unit tests,
and I think I have it figured out.
Mark
--
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.