Почему недоступно значение столбца SQLAlchemy по умолчанию до фиксации объекта?

Недавно я понял, что SQLAlchemyСтолбец по умолчанию не делаетработать так, как я ожидаю:

>>> 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

я хочуtmodel_instance.foo равному0 сразу после создания объекта, но кажется, что значение по умолчанию используется только при выполненииINSERT команда, и это действительно смущает меня. Почему один предпочел быdefault надserver_default? И как мне добиться того, чего я хочу? Я должен указать все аргументы по умолчанию в__init__? Это похоже на дублирование кода: чтобы изменить значение по умолчанию, мне нужно изменить его дважды и сохранить равенство этих значений - есть ли способ избежать этого?

Ответы на вопрос(3)

Ваш ответ на вопрос