Algunos problemas con MapperExtension of sqlalchemy

Hay dos clases: usuario y pregunta

Un usuario puede tener muchas preguntas, y también contiene un número de preguntas para registrar el recuento de preguntas que le pertenecen.

Entonces, cuando agrego una nueva pregunta, quiero actualizar el número de preguntas del usuario. Al principio, hago lo siguiente:

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


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

Todo va bien.

Pero no quiero usar la devolución de llamada de eventos para hacer lo mismo. Como sigue:

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

Nota en el método "after_insert":

instance.user # -> Get None!!!

¿Por qué?

Si cambio esa línea a:

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

Puedo obtener el usuario con éxito, pero: ¡el usuario no puede actualizarse!

Mira, he modificado el usuario:

user.question_count += 1

Pero no hay ninguna 'actualización' sql impresa en la consola, y elquestion_count No se actualizan.

Trato de agregarSession.flush() oSession.commit() en elafter_insert() método, pero ambos causan errores.

¿Hay algo importante que me falta? Por favor ayudame, gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta