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

Reply via email to