Dlaczego domyślna wartość kolumny SQLAlchemy nie jest dostępna przed zatwierdzeniem obiektu?

Ostatnio zorientowałem się, że domyślna kolumna SQLAlchemy nie działa, ponieważ oczekuję, że:

>>> Base = declarative_base()
>>> class TestModel(Base):
    ...     __tablename__ = 'tmodel'
...     id = sa.Column(sa.Integer, primary_key=True)
...     foo = sa.Column(sa.Integer, default=0)
...    
>>> tmodel_instance = TestModel()
>>> print tmodel_instance.foo
None
>>> session.add(tmodel_instance)
>>> print tmodel_instance.foo
None
>>> session.commit()
>>> print tmodel_instance.foo
0

chcętmodel_instance.foo równe0 tuż po wystąpieniu obiektu, ale wydaje się, że wartość domyślna jest używana tylko podczas wykonywaniaINSERT polecenie i naprawdę mnie to myli. Dlaczego ktoś wolałbydefault koniecserver_default? I jak mogę osiągnąć to, czego chcę? Czy mam podać wszystkie domyślne argumenty w__init__? Wydaje się, że jest to duplikacja kodu: aby zmienić domyślną wartość, muszę ją dwukrotnie zmienić i utrzymać te wartości równości - czy jest jakiś sposób, aby tego uniknąć?

questionAnswers(3)

yourAnswerToTheQuestion