yep. "default" is something that gets evaluated in python at insert time. Given it takes also a callable, it can't be translated to a proper default constraint on the backend. When you alter the table, you should do so ALSO considering if it's full or empty, and/or that the new column would be meaningful only from a certain "release" onwards.
tl;dr: the naming is unfortunate, but "default" doesn't translate to anything in the backend: all the machinery is done on the python layer. On Tuesday, July 26, 2016 at 10:13:19 AM UTC+2, Ykä Marjanen wrote: > > Hi, > > I have been using Web2py for couple years now, but have not been able to > find a decent solution to this issue. > > When creating a new web app I am constantly updating new fields to a > database table after I already have data there. When I add a new field, I > want it to have a default value for it, but for some reason web2py always > has the value at None for the new field even though I have defined it to be > 0. > > For example: > > db.define_table( > 'persons', > Field('old_field','integer',default=0), > Field('new_field','integer',default=0) > ) > > The new_field is now updated to the table correctly, but instead of 0 it > is None for the old records. > > This is annoying as I am assuming old tables to have the new_field also > set as 0 and now I must write code to assume None and change it manually to > 0. > > Am I missing something? > > Ykä > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.