On 6/29/15 5:37 AM, Adrian wrote:
I tried this code:

@listens_for(AttachmentFolder.all_attachments, 'append')
def _attachment_added(target, value, *unused):
    target.modified_dt = now_utc()

However AttachmentFolder.all_attachments is a backref so it doesn't exist at import time (I usually register listeners right after the definition of the model class). So I tried using the mapper_configured
event, but backrefs still don't exist at that point.

Besides flipping the relationship/backref around (which would work only because I don't have any listeners on the relationship itself yet), is there any clean way to bind an event listener
to a backref?
During mapper_configured(), backrefs which *originate* from that mapper should have been built up, however the receiving mapper may have already been invoked on mapper_configured() before this other mapper adds the backref relationship.

For this reason the SQLAlchemy documentation (outside of the tutorial) recommends to forego the use of backref() and use two relationship() objects instead with back_populates; this is clearer and simpler.

Another event you can use is the after_configured() event which fires once *all* mappers are set up, that would work also.



--
You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected] <mailto:[email protected]>. To post to this group, send email to [email protected] <mailto:[email protected]>.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

--
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to