kvesteri / sqlalchemy-defaults

Smart SQLAlchemy defaults for lazy guys, like me.
Other
16 stars 7 forks source link

Don't create server defaults from callable string defaults. #1

Closed oskarihiltunen closed 11 years ago

oskarihiltunen commented 11 years ago

These changes make it possible to use a callable default value for strings. For example:

class User(Model):
    default_color = Column(Unicode(7), default=u'#EE9966')

class Post(Model):
    color = Column(Unicode(7), default=lambda: (
        current_user.default_color if current_user else '#EE9966'
    ))

This doesn't work prior to the change because callables can't be used as values for server_default - in order to use a callable default one has to turn off string defaults for the entire model. After the change server_default isn't set for the columns with callable defaults, but is still set normally for other columns. The same approach is already used for integer columns.