I thought the same thing and so made date_entered capable of being empty and removed it from the form. Same result
But I did find a hack workaround and it makes me wonder if my problem has to do with the user field being a foreign key and SQLFORM not liking that its empty (since I populate just before being processed). So I check to see if the record I'm inserting already exists, if not I insert a record with an empty value field. I then show the form, get the value entered by the user and update the record. event_users = db((db.event_users.event==event_id) & (db.event_users.user_name==auth.user.id)).select(groupby=db.event_users.user_name).first() user = event_users.id entry = db((db.entries.user == user) & (db.entries.date_entered == date.today())).select().first() if entry is None: id = db.entries.insert(user=user, date_entered=date.today()) entry = db(db.entries.id == id).select().first() db.entries.user.writable = False db.entries.date_entered.writable = False form = SQLFORM(db.entries, entry) if form.process().accepted: response.flash = 'form accepted' redirect(URL('home')) elif form.errors: response.flash = 'form has errors' else: response.flash = 'please fill the form' I'm sure there's a much better way to do this, but its the only way I've gotten to work so far. Adrian On Nov 22, 11:41 am, Anthony <abasta...@gmail.com> wrote: > On Tuesday, November 22, 2011 11:31:21 AM UTC-5, Adrian Edwards wrote: > > > form = SQLFORM(db.entries) > > > form.vars.date_entered = date.today() > > form.vars probably needs a string representation instead of a date object. > Instead, maybe set the field's default value: > > db.event_users.date_entered.default = date.today()