Alguns problemas com o MapperExtension of sqlalchemy

Existem duas classes: Usuário e Pergunta

Um usuário pode ter muitas perguntas e também contém um question_count para registrar a contagem de perguntas que pertencem a ele.

Portanto, quando adiciono uma nova pergunta, desejo atualizar o question_count do usuário. No começo, faço como:

question = Question(title='aaa', content='bbb') 
Session.add(question) 
Session.flush() 


user = question.user 
### user is not None 
user.question_count += 1 
Session.commit() 

Tudo vai bem.

Mas não quero usar o retorno de chamada de evento para fazer a mesma coisa. Como segue:

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()} 
    .... 

Observe o método "after_insert":

instance.user # -> Get None!!!

Por quê?

Se eu mudar essa linha para:

Session.query(User).filter_by(id=instance.user_id).one()

Posso obter o usuário com êxito, mas: o usuário não pode ser atualizado!

Olha, eu modifiquei o usuário:

user.question_count += 1

Mas não há sql de 'atualização' impresso no console, e oquestion_count não são atualizados.

Eu tento adicionarSession.flush() ouSession.commit() noafter_insert() método, mas ambos causam erros.

Falta alguma coisa importante? Por favor me ajude, obrigado

questionAnswers(2)

yourAnswerToTheQuestion