There are two classes: User and Question A user may have many questions, and it also contains a question_count to record the the count of questions belong to him.
So, when I add a new question, I want update the question_count of the user. At first, I do as: question = Question(title='aaa', content='bbb') Session.add(question) Session.flush() user = question.user ### user is not None user.question_count += 1 Session.commit() Everything goes well. But I wan't to use event callback to do the same thing. As following: from sqlalchemy.orm.interfaces import MapperExtension class Callback(MapperExtension): def after_insert(self, mapper, connection, instance): user = instance.user ### user is None !!! user.question_count += 1 class Question(Base): __tablename__ = "questions" __mapper_args__ = {'extension':Callback()} .... 1. Note in the "after_insert" method: instance.user # -> Get None!!! Why? 2. If I change that line to: Session.query(User).filter_by(id=instance.user_id).one() I can get the user successfully, But: the user can't be updated! Look I have modified the user: user.question_count += 1 But there is no 'update' sql printed in the console, and the 'question_count' are not updated. 3. I try to add 'Session.flush()' or 'Session.commit()' in the 'after_insert()' method, but both cause errors. Is there any important thing I'm missing? Please help me, thank you everyone! -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To post to this group, send email to sqlalch...@googlegroups.com. To unsubscribe from this group, send email to sqlalchemy+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sqlalchemy?hl=en.