Sorry, what I use not my own conversation, but I try to change calendar widget for date field and have same problem like RipRyness had.
I create small application just to recreate this problem: ============ In model: ============ T.force('it') # force internationalization to change date format to %d/ %m/%Y db.define_table('atable', Field('a','date',requires=IS_NULL_OR(IS_DATE(str(T('%Y- %m-%d')))),widget=SQLFORM.widgets.date.widget), Field('b','date',requires=IS_NULL_OR(IS_DATE(str(T('%Y- %m-%d')))))) ============ In controller: ============ def index(): return dict(form=crud()) def data(): return dict(form=crud()) ============ In view: ============ {{extend 'layout.html'}} {{=form}} ============ Let's try to add row with form at 'default/index/create/atable'. Put proper formatted date 31/08/2010 to field A and and incorrect date 01/08/201 to field B. After submitting this form, I got normal red message about error in field B, but date in field A changed from 31/08/2010 to 2010-08-31. This effect happens if I change widget. For this test I use native widget for date - SQLFORM.widgets.date.widget, but have described problem. But if I remove widget=SQLFORM.widgets.date.widget from Field A, all works fine, with correct date format. I use web2py 1.83.2